mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-17 13:55:20 +00:00
Merge
This commit is contained in:
commit
fcd8f43ac7
2
.hgtags
2
.hgtags
@ -97,3 +97,5 @@ a4e6aa1f45ad23a6f083ed98d970b5006ea4d292 jdk7-b116
|
||||
8c840d3ab24f8d0f422b991638acb44b6ab1d98c jdk7-b120
|
||||
0ce0a2c3a6926677dc507839a820ab6625541e5a jdk7-b121
|
||||
6f09ea1c034f087916d2a8cf0d22be768400118f jdk7-b122
|
||||
142129d8599d1f56b29387e7f9a5fad53b6d61df jdk7-b123
|
||||
aa894c225b1a517b665ac2a58295217ea2245134 jdk7-b124
|
||||
|
||||
@ -97,3 +97,5 @@ a12a9e78df8a9d534da0b4a244ed68f0de0bd58e jdk7-b118
|
||||
366ff0b6d2151595629806b033e2e1497e3a55d4 jdk7-b120
|
||||
2c2d4f88637b488014c37e1a2eb401f68bca8838 jdk7-b121
|
||||
f1591eed71f64f6eba79fb7426f5616cc4dfea73 jdk7-b122
|
||||
ed6950da30cf1e8904b4bdb034d471647942271f jdk7-b123
|
||||
024a6755895bf91b5a3c98984c89ee018efbf538 jdk7-b124
|
||||
|
||||
13
Makefile
13
Makefile
@ -156,12 +156,6 @@ ifeq ($(BUILD_DEPLOY), true)
|
||||
clobber:: deploy-clobber
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_JDK), true)
|
||||
ifeq ($(BUNDLE_RULES_AVAILABLE), true)
|
||||
generic_build_repo_series:: openjdk-binary-plugs-bundles
|
||||
endif
|
||||
endif
|
||||
|
||||
# The debug build, fastdebug or debug. Needs special handling.
|
||||
# Note that debug builds do NOT do INSTALL steps, but must be done
|
||||
# after the product build and before the INSTALL step of the product build.
|
||||
@ -301,7 +295,6 @@ ifneq ($(SKIP_OPENJDK_BUILD), true)
|
||||
ifeq ($(BUILD_JDK), true)
|
||||
ifeq ($(BUNDLE_RULES_AVAILABLE), true)
|
||||
|
||||
OPENJDK_PLUGS=$(ABS_OUTPUTDIR)/$(OPENJDK_BINARY_PLUGS_INAME)
|
||||
OPENJDK_OUTPUTDIR=$(ABS_OUTPUTDIR)/open-output
|
||||
OPENJDK_BUILD_NAME \
|
||||
= openjdk-$(JDK_MINOR_VERSION)-$(BUILD_NUMBER)-$(PLATFORM)-$(ARCH)-$(BUNDLE_DATE)
|
||||
@ -330,7 +323,6 @@ openjdk_build:
|
||||
GENERATE_DOCS=false \
|
||||
ALT_JDK_DEVTOOLS_DIR=$(JDK_DEVTOOLS_DIR) \
|
||||
ALT_OUTPUTDIR=$(OPENJDK_OUTPUTDIR) \
|
||||
ALT_BINARY_PLUGS_PATH=$(OPENJDK_PLUGS) \
|
||||
ALT_BOOTDIR=$(OPENJDK_BOOTDIR) \
|
||||
ALT_JDK_IMPORT_PATH=$(OPENJDK_IMPORTJDK) \
|
||||
product_build )
|
||||
@ -456,7 +448,6 @@ CACERTS_FILE.desc = Location of certificates file
|
||||
DEVTOOLS_PATH.desc = Directory containing zip and gnumake
|
||||
CUPS_HEADERS_PATH.desc = Include directory location for CUPS header files
|
||||
DXSDK_PATH.desc = Root directory of DirectX SDK
|
||||
MSDEVTOOLS_PATH.desc = Root directory of VC++ tools (e.g. rc.exe)
|
||||
MSVCRT_DLL_PATH.desc = Directory containing mscvrt.dll
|
||||
|
||||
# Make variables to print out (description and value)
|
||||
@ -487,12 +478,10 @@ ifeq ($(PLATFORM), windows)
|
||||
|
||||
VARIABLE_PRINTVAL_LIST += \
|
||||
DXSDK_PATH \
|
||||
MSDEVTOOLS_PATH \
|
||||
MSVCRT_DLL_PATH
|
||||
|
||||
VARIABLE_CHECKDIR_LIST += \
|
||||
DXSDK_PATH \
|
||||
MSDEVTOOLS_PATH \
|
||||
MSVCRT_DLL_PATH
|
||||
|
||||
endif
|
||||
@ -548,7 +537,7 @@ examples_help:
|
||||
"
|
||||
|
||||
################################################################
|
||||
# Source and binary plug bundling
|
||||
# Source bundling
|
||||
################################################################
|
||||
ifeq ($(BUNDLE_RULES_AVAILABLE), true)
|
||||
include $(BUNDLE_RULES)
|
||||
|
||||
38
README
38
README
@ -1,28 +1,38 @@
|
||||
README:
|
||||
This file should be located at the top of the OpenJDK Mercurial repository
|
||||
forest. This top or enclosing repository will include a "make" directory,
|
||||
and a Makefile at the very top of the repository.
|
||||
It should also include the 6 repositories: "jdk", "hotspot", "langtools",
|
||||
"corba", "jaxws" and "jaxp".
|
||||
This file should be located at the top of the OpenJDK Mercurial root
|
||||
repository. This root repository will include a "make" directory,
|
||||
and a Makefile for building the entire OpenJDK.
|
||||
A full OpenJDK repository set (forest) should also include the following
|
||||
6 nested repositories:
|
||||
"jdk", "hotspot", "langtools", "corba", "jaxws" and "jaxp".
|
||||
There are also several source downloads for the jax* repositories that
|
||||
will be needed.
|
||||
|
||||
This one root repository can be obtained with something like:
|
||||
hg clone http://hg.openjdk.java.net/jdk7/jdk7 openjdk7
|
||||
To make sure you have all the nested repositories, you can run:
|
||||
cd openjdk7 && sh ./get_source.sh
|
||||
(This is identical to using the Mercurial Forest Extension command
|
||||
'hg fclone http://hg.openjdk.java.net/jdk7/jdk7 openjdk7').
|
||||
People unfamiliar with Mercurial should read the first few chapters of
|
||||
the Mercurial book: http://hgbook.red-bean.com/read/
|
||||
|
||||
See http://openjdk.java.net/ for more information about the OpenJDK.
|
||||
|
||||
Simple Build Instructions:
|
||||
|
||||
0. Get the necessary system software/packages installed on your system, see
|
||||
http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html
|
||||
|
||||
1. Download and install a JDK 6 from
|
||||
1. If you don't have a jdk6 installed, download and install a JDK 6 from
|
||||
http://java.sun.com/javase/downloads/index.jsp
|
||||
Set the environment variable ALT_BOOTDIR to the location of this JDK 6.
|
||||
Set the environment variable ALT_BOOTDIR to the location of JDK 6.
|
||||
|
||||
2. Download and install the Binary Plugs for the most recent JDK7 from
|
||||
http://download.java.net/openjdk/jdk7/
|
||||
Set the environment variable ALT_BINARY_PLUGS_PATH to the location of
|
||||
these binary plugs.
|
||||
|
||||
3. Check the sanity of doing a build with the current machine:
|
||||
2. Check the sanity of doing a build with your current system:
|
||||
gnumake sanity
|
||||
See README-builds.html if you run into problems.
|
||||
|
||||
4. Do a complete build of the jdk:
|
||||
3. Do a complete build of the OpenJDK:
|
||||
gnumake all
|
||||
The resulting JDK image should be found in build/*/j2sdk-image
|
||||
|
||||
|
||||
1273
README-builds.html
1273
README-builds.html
File diff suppressed because it is too large
Load Diff
@ -97,3 +97,5 @@ fa502e4834dac2176499cc1f44794d5dc32a11b9 jdk7-b117
|
||||
cff5a173ec1e89013359e804a3e31736ef6fb462 jdk7-b120
|
||||
2cc9f32992101732b23730b737740e64ebc5fa89 jdk7-b121
|
||||
1523a060032c8a5b7840198da8911abeff88118f jdk7-b122
|
||||
a230c142628cea22475ab9dc5cd544266ddf2466 jdk7-b123
|
||||
f90b3e014e831eb4f32ef035a1dad2b8ba87949f jdk7-b124
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2002, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
33
get_source.sh
Normal file
33
get_source.sh
Normal file
@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# Get clones of all nested repositories
|
||||
sh ./make/scripts/hgforest.sh clone
|
||||
|
||||
# Update all existing repositories to the latest sources
|
||||
sh ./make/scripts/hgforest.sh pull -u
|
||||
|
||||
@ -136,3 +136,7 @@ f5603a6e50422046ebc0d2f1671d55cb8f1bf1e9 jdk7-b120
|
||||
3f3653ab7af8dc1ddb9fa75dad56bf94f89e81a8 jdk7-b121
|
||||
3a548dc9cb456110ca8fc1514441a8c3bda0014d jdk7-b122
|
||||
5484e7c53fa7da5e869902437ee08a9ae10c1c69 hs20-b03
|
||||
9669f9b284108a9ee0a0ccbe215c37a130c9dcf5 jdk7-b123
|
||||
9669f9b284108a9ee0a0ccbe215c37a130c9dcf5 hs20-b04
|
||||
0a8e0d4345b37b71ec49dda08ee03b68c4f1b592 jdk7-b124
|
||||
0a8e0d4345b37b71ec49dda08ee03b68c4f1b592 hs20-b05
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -99,15 +99,8 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase {
|
||||
long typeEntrySizeOffset;
|
||||
long typeEntryArrayStride;
|
||||
|
||||
typeEntryTypeNameOffset = getLongValueFromProcess("gHotSpotVMTypeEntryTypeNameOffset");
|
||||
typeEntrySuperclassNameOffset = getLongValueFromProcess("gHotSpotVMTypeEntrySuperclassNameOffset");
|
||||
typeEntryIsOopTypeOffset = getLongValueFromProcess("gHotSpotVMTypeEntryIsOopTypeOffset");
|
||||
typeEntryIsIntegerTypeOffset = getLongValueFromProcess("gHotSpotVMTypeEntryIsIntegerTypeOffset");
|
||||
typeEntryIsUnsignedOffset = getLongValueFromProcess("gHotSpotVMTypeEntryIsUnsignedOffset");
|
||||
typeEntrySizeOffset = getLongValueFromProcess("gHotSpotVMTypeEntrySizeOffset");
|
||||
typeEntryArrayStride = getLongValueFromProcess("gHotSpotVMTypeEntryArrayStride");
|
||||
|
||||
// Fetch the address of the VMTypeEntry*
|
||||
// Fetch the address of the VMTypeEntry*. We get this symbol first
|
||||
// and try to use it to make sure that symbol lookup is working.
|
||||
Address entryAddr = lookupInProcess("gHotSpotVMTypes");
|
||||
// System.err.println("gHotSpotVMTypes address = " + entryAddr);
|
||||
// Dereference this once to get the pointer to the first VMTypeEntry
|
||||
@ -118,6 +111,14 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase {
|
||||
throw new RuntimeException("gHotSpotVMTypes was not initialized properly in the remote process; can not continue");
|
||||
}
|
||||
|
||||
typeEntryTypeNameOffset = getLongValueFromProcess("gHotSpotVMTypeEntryTypeNameOffset");
|
||||
typeEntrySuperclassNameOffset = getLongValueFromProcess("gHotSpotVMTypeEntrySuperclassNameOffset");
|
||||
typeEntryIsOopTypeOffset = getLongValueFromProcess("gHotSpotVMTypeEntryIsOopTypeOffset");
|
||||
typeEntryIsIntegerTypeOffset = getLongValueFromProcess("gHotSpotVMTypeEntryIsIntegerTypeOffset");
|
||||
typeEntryIsUnsignedOffset = getLongValueFromProcess("gHotSpotVMTypeEntryIsUnsignedOffset");
|
||||
typeEntrySizeOffset = getLongValueFromProcess("gHotSpotVMTypeEntrySizeOffset");
|
||||
typeEntryArrayStride = getLongValueFromProcess("gHotSpotVMTypeEntryArrayStride");
|
||||
|
||||
// Start iterating down it until we find an entry with no name
|
||||
Address typeNameAddr = null;
|
||||
do {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -122,10 +122,14 @@ public class COFFFileParser {
|
||||
private MemoizedObject[] sectionHeaders;
|
||||
private MemoizedObject[] symbols;
|
||||
|
||||
// Init stringTable at decl time since other fields init'ed in the
|
||||
// constructor need the String Table.
|
||||
private MemoizedObject stringTable = new MemoizedObject() {
|
||||
public Object computeValue() {
|
||||
// the String Table follows the Symbol Table
|
||||
int ptr = getPointerToSymbolTable();
|
||||
if (ptr == 0) {
|
||||
// no Symbol Table so no String Table
|
||||
return new StringTable(0);
|
||||
} else {
|
||||
return new StringTable(ptr + SYMBOL_SIZE * getNumberOfSymbols());
|
||||
@ -140,6 +144,8 @@ public class COFFFileParser {
|
||||
timeDateStamp = readInt();
|
||||
pointerToSymbolTable = readInt();
|
||||
numberOfSymbols = readInt();
|
||||
// String Table can be accessed at this point because
|
||||
// pointerToSymbolTable and numberOfSymbols fields are set.
|
||||
sizeOfOptionalHeader = readShort();
|
||||
characteristics = readShort();
|
||||
|
||||
@ -222,6 +228,8 @@ public class COFFFileParser {
|
||||
private MemoizedObject windowsSpecificFields;
|
||||
private MemoizedObject dataDirectories;
|
||||
|
||||
// We use an offset of 2 because OptionalHeaderStandardFieldsImpl doesn't
|
||||
// include the 'magic' field.
|
||||
private static final int STANDARD_FIELDS_OFFSET = 2;
|
||||
private static final int PE32_WINDOWS_SPECIFIC_FIELDS_OFFSET = 28;
|
||||
private static final int PE32_DATA_DIRECTORIES_OFFSET = 96;
|
||||
@ -288,7 +296,7 @@ public class COFFFileParser {
|
||||
private int sizeOfUninitializedData;
|
||||
private int addressOfEntryPoint;
|
||||
private int baseOfCode;
|
||||
private int baseOfData;
|
||||
private int baseOfData; // only set in PE32
|
||||
|
||||
OptionalHeaderStandardFieldsImpl(int offset,
|
||||
boolean isPE32Plus) {
|
||||
@ -301,7 +309,8 @@ public class COFFFileParser {
|
||||
sizeOfUninitializedData = readInt();
|
||||
addressOfEntryPoint = readInt();
|
||||
baseOfCode = readInt();
|
||||
if (isPE32Plus) {
|
||||
if (!isPE32Plus) {
|
||||
// only available in PE32
|
||||
baseOfData = readInt();
|
||||
}
|
||||
}
|
||||
@ -433,7 +442,10 @@ public class COFFFileParser {
|
||||
if (dir.getRVA() == 0 || dir.getSize() == 0) {
|
||||
return null;
|
||||
}
|
||||
return new ExportDirectoryTableImpl(rvaToFileOffset(dir.getRVA()), dir.getSize());
|
||||
// ExportDirectoryTableImpl needs both the RVA and the
|
||||
// RVA converted to a file offset.
|
||||
return new
|
||||
ExportDirectoryTableImpl(dir.getRVA(), dir.getSize());
|
||||
}
|
||||
};
|
||||
|
||||
@ -526,6 +538,7 @@ public class COFFFileParser {
|
||||
}
|
||||
|
||||
class ExportDirectoryTableImpl implements ExportDirectoryTable {
|
||||
private int exportDataDirRVA;
|
||||
private int offset;
|
||||
private int size;
|
||||
|
||||
@ -548,8 +561,9 @@ public class COFFFileParser {
|
||||
private MemoizedObject exportOrdinalTable;
|
||||
private MemoizedObject exportAddressTable;
|
||||
|
||||
ExportDirectoryTableImpl(int offset, int size) {
|
||||
this.offset = offset;
|
||||
ExportDirectoryTableImpl(int exportDataDirRVA, int size) {
|
||||
this.exportDataDirRVA = exportDataDirRVA;
|
||||
offset = rvaToFileOffset(exportDataDirRVA);
|
||||
this.size = size;
|
||||
seek(offset);
|
||||
exportFlags = readInt();
|
||||
@ -595,6 +609,7 @@ public class COFFFileParser {
|
||||
|
||||
exportOrdinalTable = new MemoizedObject() {
|
||||
public Object computeValue() {
|
||||
// number of ordinals is same as the number of name pointers
|
||||
short[] ordinals = new short[getNumberOfNamePointers()];
|
||||
seek(rvaToFileOffset(getOrdinalTableRVA()));
|
||||
for (int i = 0; i < ordinals.length; i++) {
|
||||
@ -608,14 +623,18 @@ public class COFFFileParser {
|
||||
public Object computeValue() {
|
||||
int[] addresses = new int[getNumberOfAddressTableEntries()];
|
||||
seek(rvaToFileOffset(getExportAddressTableRVA()));
|
||||
// Must make two passes to avoid rvaToFileOffset
|
||||
// destroying seek() position
|
||||
// The Export Address Table values are a union of two
|
||||
// possible values:
|
||||
// Export RVA - The address of the exported symbol when
|
||||
// loaded into memory, relative to the image base.
|
||||
// This value doesn't get converted into a file offset.
|
||||
// Forwarder RVA - The pointer to a null-terminated ASCII
|
||||
// string in the export section. This value gets
|
||||
// converted into a file offset because we have to
|
||||
// fetch the string.
|
||||
for (int i = 0; i < addresses.length; i++) {
|
||||
addresses[i] = readInt();
|
||||
}
|
||||
for (int i = 0; i < addresses.length; i++) {
|
||||
addresses[i] = rvaToFileOffset(addresses[i]);
|
||||
}
|
||||
return addresses;
|
||||
}
|
||||
};
|
||||
@ -648,11 +667,12 @@ public class COFFFileParser {
|
||||
|
||||
public boolean isExportAddressForwarder(short ordinal) {
|
||||
int addr = getExportAddress(ordinal);
|
||||
return ((offset <= addr) && (addr < (offset + size)));
|
||||
return ((exportDataDirRVA <= addr) &&
|
||||
(addr < (exportDataDirRVA + size)));
|
||||
}
|
||||
|
||||
public String getExportAddressForwarder(short ordinal) {
|
||||
seek(getExportAddress(ordinal));
|
||||
seek(rvaToFileOffset(getExportAddress(ordinal)));
|
||||
return readCString();
|
||||
}
|
||||
|
||||
@ -3371,10 +3391,17 @@ public class COFFFileParser {
|
||||
throw new COFFException(e);
|
||||
}
|
||||
// Look up in string table
|
||||
// FIXME: this index value is assumed to be in the valid range
|
||||
name = getStringTable().get(index);
|
||||
} else {
|
||||
try {
|
||||
name = new String(tmpName, US_ASCII);
|
||||
int length = 0;
|
||||
// find last non-NULL
|
||||
for (; length < tmpName.length && tmpName[length] != '\0';) {
|
||||
length++;
|
||||
}
|
||||
// don't include NULL chars in returned name String
|
||||
name = new String(tmpName, 0, length, US_ASCII);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new COFFException(e);
|
||||
}
|
||||
@ -3487,6 +3514,7 @@ public class COFFFileParser {
|
||||
tmpName[5] << 16 |
|
||||
tmpName[6] << 8 |
|
||||
tmpName[7]);
|
||||
// FIXME: stringOffset is assumed to be in the valid range
|
||||
name = getStringTable().getAtOffset(stringOffset);
|
||||
}
|
||||
|
||||
@ -3698,12 +3726,13 @@ public class COFFFileParser {
|
||||
|
||||
StringTable(int offset) {
|
||||
if (offset == 0) {
|
||||
// no String Table
|
||||
strings = new COFFString[0];
|
||||
return;
|
||||
}
|
||||
|
||||
seek(offset);
|
||||
int length = readInt();
|
||||
int length = readInt(); // length includes itself
|
||||
byte[] data = new byte[length - 4];
|
||||
int numBytesRead = readBytes(data);
|
||||
if (numBytesRead != data.length) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -37,35 +37,48 @@ public class DumpExports {
|
||||
|
||||
String filename = args[0];
|
||||
COFFFile file = COFFFileParser.getParser().parse(filename);
|
||||
ExportDirectoryTable exports =
|
||||
file.getHeader().
|
||||
getOptionalHeader().
|
||||
getDataDirectories().
|
||||
getExportDirectoryTable();
|
||||
|
||||
// get common point for both things we want to dump
|
||||
OptionalHeaderDataDirectories dataDirs = file.getHeader().getOptionalHeader().
|
||||
getDataDirectories();
|
||||
|
||||
// dump the header data directory for the Export Table:
|
||||
DataDirectory dir = dataDirs.getExportTable();
|
||||
System.out.println("Export table: RVA = " + dir.getRVA() + "/0x" +
|
||||
Integer.toHexString(dir.getRVA()) + ", size = " + dir.getSize() + "/0x" +
|
||||
Integer.toHexString(dir.getSize()));
|
||||
|
||||
System.out.println(file.getHeader().getNumberOfSections() + " sections in file");
|
||||
for (int i = 1; i <= file.getHeader().getNumberOfSections(); i++) {
|
||||
SectionHeader sec = file.getHeader().getSectionHeader(i);
|
||||
System.out.println(" Section " + i + ":");
|
||||
System.out.println(" Name = '" + sec.getName() + "'");
|
||||
System.out.println(" VirtualSize = " + sec.getSize() + "/0x" +
|
||||
Integer.toHexString(sec.getSize()));
|
||||
System.out.println(" VirtualAddress = " + sec.getVirtualAddress() + "/0x" +
|
||||
Integer.toHexString(sec.getVirtualAddress()));
|
||||
System.out.println(" SizeOfRawData = " + sec.getSizeOfRawData() + "/0x" +
|
||||
Integer.toHexString(sec.getSizeOfRawData()));
|
||||
System.out.println(" PointerToRawData = " + sec.getPointerToRawData() + "/0x" +
|
||||
Integer.toHexString(sec.getPointerToRawData()));
|
||||
}
|
||||
|
||||
ExportDirectoryTable exports = dataDirs.getExportDirectoryTable();
|
||||
if (exports == null) {
|
||||
System.out.println("No exports found.");
|
||||
} else {
|
||||
System.out.println(file.getHeader().getNumberOfSections() + " sections in file");
|
||||
for (int i = 0; i < file.getHeader().getNumberOfSections(); i++) {
|
||||
System.out.println(" Section " + i + ": " + file.getHeader().getSectionHeader(1 + i).getName());
|
||||
}
|
||||
|
||||
DataDirectory dir = file.getHeader().getOptionalHeader().getDataDirectories().getExportTable();
|
||||
System.out.println("Export table: RVA = 0x" + Integer.toHexString(dir.getRVA()) +
|
||||
", size = 0x" + Integer.toHexString(dir.getSize()));
|
||||
|
||||
System.out.println("DLL name: " + exports.getDLLName());
|
||||
System.out.println("Time/date stamp 0x" + Integer.toHexString(exports.getTimeDateStamp()));
|
||||
System.out.println("Major version 0x" + Integer.toHexString(exports.getMajorVersion() & 0xFFFF));
|
||||
System.out.println("Minor version 0x" + Integer.toHexString(exports.getMinorVersion() & 0xFFFF));
|
||||
System.out.println(exports.getNumberOfNamePointers() + " functions found");
|
||||
System.out.println(exports.getNumberOfNamePointers() + " exports found");
|
||||
for (int i = 0; i < exports.getNumberOfNamePointers(); i++) {
|
||||
System.out.println(" 0x" +
|
||||
Integer.toHexString(exports.getExportAddress(exports.getExportOrdinal(i))) +
|
||||
" " +
|
||||
(exports.isExportAddressForwarder(exports.getExportOrdinal(i)) ?
|
||||
("Forwarded to " + exports.getExportAddressForwarder(exports.getExportOrdinal(i))) :
|
||||
exports.getExportName(i)));
|
||||
short ordinal = exports.getExportOrdinal(i);
|
||||
System.out.print("[" + i + "] '" + exports.getExportName(i) + "': [" +
|
||||
ordinal + "] = 0x" + Integer.toHexString(exports.getExportAddress(ordinal)));
|
||||
System.out.println(exports.isExportAddressForwarder(ordinal)
|
||||
? " Forwarded to '" + exports.getExportAddressForwarder(ordinal) + "'"
|
||||
: "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -42,8 +42,8 @@ public class TestParser {
|
||||
COFFHeader header = file.getHeader();
|
||||
int numSections = header.getNumberOfSections();
|
||||
System.out.println(numSections + " sections detected.");
|
||||
for (int i = 0; i < numSections; i++) {
|
||||
SectionHeader secHeader = header.getSectionHeader(1 + i);
|
||||
for (int i = 1; i <= numSections; i++) {
|
||||
SectionHeader secHeader = header.getSectionHeader(i);
|
||||
System.out.println(secHeader.getName());
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -506,7 +506,6 @@ public class WindbgDebuggerLocal extends DebuggerBase implements WindbgDebugger
|
||||
throw new DebuggerException("Unimplemented");
|
||||
}
|
||||
|
||||
private static String DTFWHome;
|
||||
private static String imagePath;
|
||||
private static String symbolPath;
|
||||
private static boolean useNativeLookup;
|
||||
@ -514,81 +513,143 @@ public class WindbgDebuggerLocal extends DebuggerBase implements WindbgDebugger
|
||||
static {
|
||||
|
||||
/*
|
||||
* sawindbg.dll depends on dbgeng.dll which
|
||||
* itself depends on dbghelp.dll. dbgeng.dll and dbghelp.dll.
|
||||
* On systems newer than Windows 2000, these two .dlls are
|
||||
* in the standard system directory so we will find them there.
|
||||
* On Windows 2000 and earlier, these files do not exist.
|
||||
* The user must download Debugging Tools For Windows (DTFW)
|
||||
* and install it in order to use SA.
|
||||
* sawindbg.dll depends on dbgeng.dll which itself depends on
|
||||
* dbghelp.dll. We have to make sure that the dbgeng.dll and
|
||||
* dbghelp.dll that we load are compatible with each other. We
|
||||
* load both of those libraries from the same directory based
|
||||
* on the theory that co-located libraries are compatible.
|
||||
*
|
||||
* We have to make sure we use the two files from the same directory
|
||||
* in case there are more than one copy on the system because
|
||||
* one version of dbgeng.dll might not be compatible with a
|
||||
* different version of dbghelp.dll.
|
||||
* We first look for them in the directory pointed at by
|
||||
* env. var. DEBUGGINGTOOLSFORWINDOWS, next in the default
|
||||
* installation dir for DTFW, and lastly in the standard
|
||||
* system directory. We expect that that we will find
|
||||
* them in the standard system directory on all systems
|
||||
* newer than Windows 2000.
|
||||
* On Windows 2000 and earlier, dbgeng.dll and dbghelp.dll were
|
||||
* not included as part of the standard system directory. On
|
||||
* systems newer than Windows 2000, dbgeng.dll and dbghelp.dll
|
||||
* are included in the standard system directory. However, the
|
||||
* versions included in the standard system directory may not
|
||||
* be able to handle symbol information for the newer compilers.
|
||||
*
|
||||
* We search for and explicitly load the libraries using the
|
||||
* following directory search order:
|
||||
*
|
||||
* - java.home/bin (same as $JAVA_HOME/jre/bin)
|
||||
* - dir named by DEBUGGINGTOOLSFORWINDOWS environment variable
|
||||
* - various "Debugging Tools For Windows" program directories
|
||||
* - the system directory ($SYSROOT/system32)
|
||||
*
|
||||
* If SA is invoked with -Dsun.jvm.hotspot.loadLibrary.DEBUG=1,
|
||||
* then debug messages about library loading are printed to
|
||||
* System.err.
|
||||
*/
|
||||
String dirName = null;
|
||||
DTFWHome = System.getenv("DEBUGGINGTOOLSFORWINDOWS");
|
||||
|
||||
if (DTFWHome == null) {
|
||||
// See if we have the files in the default location.
|
||||
String sysRoot = System.getenv("SYSTEMROOT");
|
||||
DTFWHome = sysRoot + File.separator +
|
||||
".." + File.separator + "Program Files" +
|
||||
File.separator + "Debugging Tools For Windows";
|
||||
}
|
||||
String dbgengPath = null;
|
||||
String dbghelpPath = null;
|
||||
String sawindbgPath = null;
|
||||
List searchList = new ArrayList();
|
||||
|
||||
boolean loadLibraryDEBUG =
|
||||
System.getProperty("sun.jvm.hotspot.loadLibrary.DEBUG") != null;
|
||||
|
||||
{
|
||||
String dbghelp = DTFWHome + File.separator + "dbghelp.dll";
|
||||
String dbgeng = DTFWHome + File.separator + "dbgeng.dll";
|
||||
File fhelp = new File(dbghelp);
|
||||
File feng = new File(dbgeng);
|
||||
if (fhelp.exists() && feng.exists()) {
|
||||
// found both, we are happy.
|
||||
// NOTE: The order of loads is important! If we load dbgeng.dll
|
||||
// first, then the dependency - dbghelp.dll - will be loaded
|
||||
// from usual DLL search thereby defeating the purpose!
|
||||
System.load(dbghelp);
|
||||
System.load(dbgeng);
|
||||
} else if (! fhelp.exists() && ! feng.exists()) {
|
||||
// neither exist. We will ignore this dir and assume
|
||||
// they are in the system dir.
|
||||
DTFWHome = null;
|
||||
} else {
|
||||
// one exists but not the other
|
||||
//System.err.println("Error: Both files dbghelp.dll and dbgeng.dll "
|
||||
// "must exist in directory " + DTFWHome);
|
||||
throw new UnsatisfiedLinkError("Both files dbghelp.dll and " +
|
||||
"dbgeng.dll must exist in " +
|
||||
"directory " + DTFWHome);
|
||||
}
|
||||
}
|
||||
if (DTFWHome == null) {
|
||||
// The files better be in the system dir.
|
||||
String sysDir = System.getenv("SYSTEMROOT") +
|
||||
File.separator + "system32";
|
||||
// First place to search is co-located with sawindbg.dll in
|
||||
// $JAVA_HOME/jre/bin (java.home property is set to $JAVA_HOME/jre):
|
||||
searchList.add(System.getProperty("java.home") + File.separator + "bin");
|
||||
sawindbgPath = (String) searchList.get(0) + File.separator +
|
||||
"sawindbg.dll";
|
||||
|
||||
File feng = new File(sysDir + File.separator + "dbgeng.dll");
|
||||
if (!feng.exists()) {
|
||||
throw new UnsatisfiedLinkError("File dbgeng.dll does not exist in " +
|
||||
sysDir + ". Please search microsoft.com " +
|
||||
"for Debugging Tools For Windows, and " +
|
||||
"either download it to the default " +
|
||||
"location, or download it to a custom " +
|
||||
"location and set environment variable " +
|
||||
" DEBUGGINGTOOLSFORWINDOWS " +
|
||||
"to the pathname of that location.");
|
||||
// second place to search is specified by an environment variable:
|
||||
String DTFWHome = System.getenv("DEBUGGINGTOOLSFORWINDOWS");
|
||||
if (DTFWHome != null) {
|
||||
searchList.add(DTFWHome);
|
||||
}
|
||||
|
||||
// The third place to search is the install directory for the
|
||||
// "Debugging Tools For Windows" package; so far there are three
|
||||
// name variations that we know of:
|
||||
String sysRoot = System.getenv("SYSTEMROOT");
|
||||
DTFWHome = sysRoot + File.separator + ".." + File.separator +
|
||||
"Program Files" + File.separator + "Debugging Tools For Windows";
|
||||
searchList.add(DTFWHome);
|
||||
searchList.add(DTFWHome + " (x86)");
|
||||
searchList.add(DTFWHome + " (x64)");
|
||||
|
||||
// The last place to search is the system directory:
|
||||
searchList.add(sysRoot + File.separator + "system32");
|
||||
}
|
||||
|
||||
for (int i = 0; i < searchList.size(); i++) {
|
||||
File dir = new File((String) searchList.get(i));
|
||||
if (!dir.exists()) {
|
||||
if (loadLibraryDEBUG) {
|
||||
System.err.println("DEBUG: '" + searchList.get(i) +
|
||||
"': directory does not exist.");
|
||||
}
|
||||
// this search directory doesn't exist so skip it
|
||||
continue;
|
||||
}
|
||||
|
||||
dbgengPath = (String) searchList.get(i) + File.separator + "dbgeng.dll";
|
||||
dbghelpPath = (String) searchList.get(i) + File.separator + "dbghelp.dll";
|
||||
|
||||
File feng = new File(dbgengPath);
|
||||
File fhelp = new File(dbghelpPath);
|
||||
if (feng.exists() && fhelp.exists()) {
|
||||
// both files exist so we have a match
|
||||
break;
|
||||
}
|
||||
|
||||
// At least one of the files does not exist; no warning if both
|
||||
// don't exist. If just one doesn't exist then we don't check
|
||||
// loadLibraryDEBUG because we have a mis-configured system.
|
||||
if (feng.exists()) {
|
||||
System.err.println("WARNING: found '" + dbgengPath +
|
||||
"' but did not find '" + dbghelpPath + "'; ignoring '" +
|
||||
dbgengPath + "'.");
|
||||
} else if (fhelp.exists()) {
|
||||
System.err.println("WARNING: found '" + dbghelpPath +
|
||||
"' but did not find '" + dbgengPath + "'; ignoring '" +
|
||||
dbghelpPath + "'.");
|
||||
} else if (loadLibraryDEBUG) {
|
||||
System.err.println("DEBUG: searched '" + searchList.get(i) +
|
||||
"': dbgeng.dll and dbghelp.dll were not found.");
|
||||
}
|
||||
dbgengPath = null;
|
||||
dbghelpPath = null;
|
||||
}
|
||||
|
||||
if (dbgengPath == null || dbghelpPath == null) {
|
||||
// at least one of the files wasn't found anywhere we searched
|
||||
String mesg = null;
|
||||
|
||||
if (dbgengPath == null && dbghelpPath == null) {
|
||||
mesg = "dbgeng.dll and dbghelp.dll cannot be found. ";
|
||||
} else if (dbgengPath == null) {
|
||||
mesg = "dbgeng.dll cannot be found (dbghelp.dll was found). ";
|
||||
} else {
|
||||
mesg = "dbghelp.dll cannot be found (dbgeng.dll was found). ";
|
||||
}
|
||||
throw new UnsatisfiedLinkError(mesg +
|
||||
"Please search microsoft.com for 'Debugging Tools For Windows', " +
|
||||
"and either download it to the default location, or download it " +
|
||||
"to a custom location and set environment variable " +
|
||||
"'DEBUGGINGTOOLSFORWINDOWS' to the pathname of that location.");
|
||||
}
|
||||
|
||||
// NOTE: The order of loads is important! If we load dbgeng.dll
|
||||
// first, then the dependency - dbghelp.dll - will be loaded
|
||||
// from usual DLL search thereby defeating the purpose!
|
||||
if (loadLibraryDEBUG) {
|
||||
System.err.println("DEBUG: loading '" + dbghelpPath + "'.");
|
||||
}
|
||||
System.load(dbghelpPath);
|
||||
if (loadLibraryDEBUG) {
|
||||
System.err.println("DEBUG: loading '" + dbgengPath + "'.");
|
||||
}
|
||||
System.load(dbgengPath);
|
||||
|
||||
// Now, load sawindbg.dll
|
||||
System.loadLibrary("sawindbg");
|
||||
if (loadLibraryDEBUG) {
|
||||
System.err.println("DEBUG: loading '" + sawindbgPath + "'.");
|
||||
}
|
||||
System.load(sawindbgPath);
|
||||
|
||||
// where do I find '.exe', '.dll' files?
|
||||
imagePath = System.getProperty("sun.jvm.hotspot.debugger.windbg.imagePath");
|
||||
if (imagePath == null) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -30,6 +30,7 @@ import sun.jvm.hotspot.asm.*;
|
||||
import sun.jvm.hotspot.asm.sparc.*;
|
||||
import sun.jvm.hotspot.asm.x86.*;
|
||||
import sun.jvm.hotspot.asm.ia64.*;
|
||||
import sun.jvm.hotspot.asm.amd64.*;
|
||||
import sun.jvm.hotspot.code.*;
|
||||
import sun.jvm.hotspot.compiler.*;
|
||||
import sun.jvm.hotspot.debugger.*;
|
||||
@ -198,6 +199,8 @@ public class HTMLGenerator implements /* imports */ ClassConstants {
|
||||
cpuHelper = new SPARCHelper();
|
||||
} else if (cpu.equals("x86")) {
|
||||
cpuHelper = new X86Helper();
|
||||
} else if (cpu.equals("amd64")) {
|
||||
cpuHelper = new AMD64Helper();
|
||||
} else if (cpu.equals("ia64")) {
|
||||
cpuHelper = new IA64Helper();
|
||||
} else {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -31,11 +31,11 @@
|
||||
#
|
||||
|
||||
# Don't put quotes (fail windows build).
|
||||
HOTSPOT_VM_COPYRIGHT=Copyright 2010
|
||||
HOTSPOT_VM_COPYRIGHT=Copyright 2011
|
||||
|
||||
HS_MAJOR_VER=20
|
||||
HS_MINOR_VER=0
|
||||
HS_BUILD_NUMBER=04
|
||||
HS_BUILD_NUMBER=06
|
||||
|
||||
JDK_MAJOR_VER=1
|
||||
JDK_MINOR_VER=7
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -150,6 +150,7 @@ jprt.build.targets= \
|
||||
|
||||
jprt.my.solaris.sparc.test.targets= \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jvm98, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-scimark, \
|
||||
${jprt.my.solaris.sparc}-product-{c1|c2}-runThese, \
|
||||
${jprt.my.solaris.sparc}-fastdebug-c1-runThese_Xshare, \
|
||||
@ -168,6 +169,7 @@ jprt.my.solaris.sparc.test.targets= \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_G1, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-GCOld_ParOldGC, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_default, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-c2-jbb_default_tiered, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_SerialGC, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_ParallelGC, \
|
||||
${jprt.my.solaris.sparc}-{product|fastdebug}-{c1|c2}-jbb_CMS, \
|
||||
@ -176,6 +178,7 @@ jprt.my.solaris.sparc.test.targets= \
|
||||
|
||||
jprt.my.solaris.sparcv9.test.targets= \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-scimark, \
|
||||
${jprt.my.solaris.sparcv9}-product-c2-runThese, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_default, \
|
||||
@ -193,6 +196,7 @@ jprt.my.solaris.sparcv9.test.targets= \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_G1, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCOld_ParOldGC, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_default, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_default_tiered, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_SerialGC, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_ParallelGC, \
|
||||
${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jbb_CMS, \
|
||||
@ -201,6 +205,7 @@ jprt.my.solaris.sparcv9.test.targets= \
|
||||
|
||||
jprt.my.solaris.x64.test.targets= \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-scimark, \
|
||||
${jprt.my.solaris.x64}-product-c2-runThese, \
|
||||
${jprt.my.solaris.x64}-product-c2-runThese_Xcomp, \
|
||||
@ -219,6 +224,7 @@ jprt.my.solaris.x64.test.targets= \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_G1, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_ParOldGC, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_default, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_default_tiered, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_SerialGC, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-jbb_ParallelGC, \
|
||||
${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCOld_CMS, \
|
||||
@ -227,6 +233,7 @@ jprt.my.solaris.x64.test.targets= \
|
||||
|
||||
jprt.my.solaris.i586.test.targets= \
|
||||
${jprt.my.solaris.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
|
||||
${jprt.my.solaris.i586}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.solaris.i586}-{product|fastdebug}-{c1|c2}-scimark, \
|
||||
${jprt.my.solaris.i586}-product-{c1|c2}-runThese_Xcomp, \
|
||||
${jprt.my.solaris.i586}-fastdebug-c1-runThese_Xcomp, \
|
||||
@ -253,6 +260,7 @@ jprt.my.solaris.i586.test.targets= \
|
||||
${jprt.my.solaris.i586}-product-c1-GCOld_G1, \
|
||||
${jprt.my.solaris.i586}-product-c1-GCOld_ParOldGC, \
|
||||
${jprt.my.solaris.i586}-fastdebug-c2-jbb_default, \
|
||||
${jprt.my.solaris.i586}-fastdebug-c2-jbb_default_tiered, \
|
||||
${jprt.my.solaris.i586}-fastdebug-c2-jbb_ParallelGC, \
|
||||
${jprt.my.solaris.i586}-fastdebug-c2-jbb_CMS, \
|
||||
${jprt.my.solaris.i586}-fastdebug-c2-jbb_G1, \
|
||||
@ -260,6 +268,7 @@ jprt.my.solaris.i586.test.targets= \
|
||||
|
||||
jprt.my.linux.i586.test.targets = \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-scimark, \
|
||||
${jprt.my.linux.i586}-product-c1-runThese_Xcomp, \
|
||||
${jprt.my.linux.i586}-fastdebug-c1-runThese_Xshare, \
|
||||
@ -279,6 +288,7 @@ jprt.my.linux.i586.test.targets = \
|
||||
${jprt.my.linux.i586}-product-{c1|c2}-GCOld_G1, \
|
||||
${jprt.my.linux.i586}-product-{c1|c2}-GCOld_ParOldGC, \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_default, \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-c2-jbb_default_tiered, \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_ParallelGC, \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_CMS, \
|
||||
${jprt.my.linux.i586}-{product|fastdebug}-c1-jbb_G1, \
|
||||
@ -286,6 +296,7 @@ jprt.my.linux.i586.test.targets = \
|
||||
|
||||
jprt.my.linux.x64.test.targets = \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-jvm98, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-scimark, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-GCBasher_default, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-GCBasher_SerialGC, \
|
||||
@ -302,12 +313,14 @@ jprt.my.linux.x64.test.targets = \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_G1, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-GCOld_ParOldGC, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_default, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_default_tiered, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_ParallelGC, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_G1, \
|
||||
${jprt.my.linux.x64}-{product|fastdebug}-c2-jbb_ParOldGC
|
||||
|
||||
jprt.my.windows.i586.test.targets = \
|
||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-jvm98, \
|
||||
${jprt.my.windows.i586}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-scimark, \
|
||||
${jprt.my.windows.i586}-product-{c1|c2}-runThese, \
|
||||
${jprt.my.windows.i586}-product-{c1|c2}-runThese_Xcomp, \
|
||||
@ -327,6 +340,7 @@ jprt.my.windows.i586.test.targets = \
|
||||
${jprt.my.windows.i586}-product-{c1|c2}-GCOld_G1, \
|
||||
${jprt.my.windows.i586}-product-{c1|c2}-GCOld_ParOldGC, \
|
||||
${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-jbb_default, \
|
||||
${jprt.my.windows.i586}-{product|fastdebug}-c2-jbb_default_tiered, \
|
||||
${jprt.my.windows.i586}-product-{c1|c2}-jbb_ParallelGC, \
|
||||
${jprt.my.windows.i586}-product-{c1|c2}-jbb_CMS, \
|
||||
${jprt.my.windows.i586}-product-{c1|c2}-jbb_G1, \
|
||||
@ -334,6 +348,7 @@ jprt.my.windows.i586.test.targets = \
|
||||
|
||||
jprt.my.windows.x64.test.targets = \
|
||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98, \
|
||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98_tiered, \
|
||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-scimark, \
|
||||
${jprt.my.windows.x64}-product-c2-runThese, \
|
||||
${jprt.my.windows.x64}-product-c2-runThese_Xcomp, \
|
||||
@ -351,6 +366,7 @@ jprt.my.windows.x64.test.targets = \
|
||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_G1, \
|
||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-GCOld_ParOldGC, \
|
||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-jbb_default, \
|
||||
${jprt.my.windows.x64}-{product|fastdebug}-c2-jbb_default_tiered, \
|
||||
${jprt.my.windows.x64}-product-c2-jbb_CMS, \
|
||||
${jprt.my.windows.x64}-product-c2-jbb_ParallelGC, \
|
||||
${jprt.my.windows.x64}-product-c2-jbb_G1, \
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright 2008, 2010 Red Hat, Inc.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -61,7 +61,7 @@ include $(GAMMADIR)/make/scm.make
|
||||
QUIETLY$(MAKE_VERBOSE) = @
|
||||
|
||||
# For now, until the compiler is less wobbly:
|
||||
TESTFLAGS = -Xbatch -showversion
|
||||
TESTFLAGS = -Xbatch -Xmx32m -showversion
|
||||
|
||||
### maye ARCH_XXX instead?
|
||||
ifdef USE_GCC
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -119,6 +119,10 @@ else
|
||||
LIBS += -lsocket -lsched -ldl $(LIBM) -lthread -lc -ldemangle
|
||||
endif # sparcWorks
|
||||
|
||||
ifeq ("${Platform_arch}", "sparc")
|
||||
LIBS += -lkstat
|
||||
endif
|
||||
|
||||
# By default, link the *.o into the library, not the executable.
|
||||
LINK_INTO$(LINK_INTO) = LIBJVM
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
REM
|
||||
REM Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
REM Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
REM
|
||||
REM This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -152,7 +152,7 @@ MS_RUNTIME_OPTION = /MTd /D "_DEBUG"
|
||||
!endif
|
||||
|
||||
# Always add the _STATIC_CPPLIB flag
|
||||
STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB
|
||||
STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB /D _DISABLE_DEPRECATE_STATIC_CPPLIB
|
||||
MS_RUNTIME_OPTION = $(MS_RUNTIME_OPTION) $(STATIC_CPPLIB_OPTION)
|
||||
CPP_FLAGS=$(CPP_FLAGS) $(MS_RUNTIME_OPTION)
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "asm/assembler.hpp"
|
||||
#include "assembler_sparc.inline.hpp"
|
||||
#include "gc_interface/collectedHeap.inline.hpp"
|
||||
#include "interpreter/interpreter.hpp"
|
||||
@ -1327,37 +1328,38 @@ void MacroAssembler::patchable_sethi(const AddressLiteral& addrlit, Register d)
|
||||
}
|
||||
|
||||
|
||||
int MacroAssembler::size_of_sethi(address a, bool worst_case) {
|
||||
int MacroAssembler::insts_for_sethi(address a, bool worst_case) {
|
||||
#ifdef _LP64
|
||||
if (worst_case) return 7;
|
||||
intptr_t iaddr = (intptr_t)a;
|
||||
int hi32 = (int)(iaddr >> 32);
|
||||
int lo32 = (int)(iaddr);
|
||||
int inst_count;
|
||||
if (hi32 == 0 && lo32 >= 0)
|
||||
inst_count = 1;
|
||||
else if (hi32 == -1)
|
||||
inst_count = 2;
|
||||
if (worst_case) return 7;
|
||||
intptr_t iaddr = (intptr_t) a;
|
||||
int msb32 = (int) (iaddr >> 32);
|
||||
int lsb32 = (int) (iaddr);
|
||||
int count;
|
||||
if (msb32 == 0 && lsb32 >= 0)
|
||||
count = 1;
|
||||
else if (msb32 == -1)
|
||||
count = 2;
|
||||
else {
|
||||
inst_count = 2;
|
||||
if ( hi32 & 0x3ff )
|
||||
inst_count++;
|
||||
if ( lo32 & 0xFFFFFC00 ) {
|
||||
if( (lo32 >> 20) & 0xfff ) inst_count += 2;
|
||||
if( (lo32 >> 10) & 0x3ff ) inst_count += 2;
|
||||
count = 2;
|
||||
if (msb32 & 0x3ff)
|
||||
count++;
|
||||
if (lsb32 & 0xFFFFFC00 ) {
|
||||
if ((lsb32 >> 20) & 0xfff) count += 2;
|
||||
if ((lsb32 >> 10) & 0x3ff) count += 2;
|
||||
}
|
||||
}
|
||||
return BytesPerInstWord * inst_count;
|
||||
return count;
|
||||
#else
|
||||
return BytesPerInstWord;
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
int MacroAssembler::worst_case_size_of_set() {
|
||||
return size_of_sethi(NULL, true) + 1;
|
||||
int MacroAssembler::worst_case_insts_for_set() {
|
||||
return insts_for_sethi(NULL, true) + 1;
|
||||
}
|
||||
|
||||
|
||||
// Keep in sync with MacroAssembler::insts_for_internal_set
|
||||
void MacroAssembler::internal_set(const AddressLiteral& addrlit, Register d, bool ForceRelocatable) {
|
||||
intptr_t value = addrlit.value();
|
||||
|
||||
@ -1379,6 +1381,23 @@ void MacroAssembler::internal_set(const AddressLiteral& addrlit, Register d, boo
|
||||
}
|
||||
}
|
||||
|
||||
// Keep in sync with MacroAssembler::internal_set
|
||||
int MacroAssembler::insts_for_internal_set(intptr_t value) {
|
||||
// can optimize
|
||||
if (-4096 <= value && value <= 4095) {
|
||||
return 1;
|
||||
}
|
||||
if (inv_hi22(hi22(value)) == value) {
|
||||
return insts_for_sethi((address) value);
|
||||
}
|
||||
int count = insts_for_sethi((address) value);
|
||||
AddressLiteral al(value);
|
||||
if (al.low10() != 0) {
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
void MacroAssembler::set(const AddressLiteral& al, Register d) {
|
||||
internal_set(al, d, false);
|
||||
}
|
||||
@ -1443,11 +1462,11 @@ void MacroAssembler::set64(jlong value, Register d, Register tmp) {
|
||||
}
|
||||
}
|
||||
|
||||
int MacroAssembler::size_of_set64(jlong value) {
|
||||
int MacroAssembler::insts_for_set64(jlong value) {
|
||||
v9_dep();
|
||||
|
||||
int hi = (int)(value >> 32);
|
||||
int lo = (int)(value & ~0);
|
||||
int hi = (int) (value >> 32);
|
||||
int lo = (int) (value & ~0);
|
||||
int count = 0;
|
||||
|
||||
// (Matcher::isSimpleConstant64 knows about the following optimizations.)
|
||||
@ -4083,11 +4102,15 @@ void MacroAssembler::tlab_refill(Label& retry, Label& try_eden, Label& slow_case
|
||||
store_klass(t2, top);
|
||||
verify_oop(top);
|
||||
|
||||
ld_ptr(G2_thread, in_bytes(JavaThread::tlab_start_offset()), t1);
|
||||
sub(top, t1, t1); // size of tlab's allocated portion
|
||||
incr_allocated_bytes(t1, 0, t2);
|
||||
|
||||
// refill the tlab with an eden allocation
|
||||
bind(do_refill);
|
||||
ld_ptr(G2_thread, in_bytes(JavaThread::tlab_size_offset()), t1);
|
||||
sll_ptr(t1, LogHeapWordSize, t1);
|
||||
// add object_size ??
|
||||
// allocate new tlab, address returned in top
|
||||
eden_allocate(top, t1, 0, t2, t3, slow_case);
|
||||
|
||||
st_ptr(top, G2_thread, in_bytes(JavaThread::tlab_start_offset()));
|
||||
@ -4115,6 +4138,22 @@ void MacroAssembler::tlab_refill(Label& retry, Label& try_eden, Label& slow_case
|
||||
delayed()->nop();
|
||||
}
|
||||
|
||||
void MacroAssembler::incr_allocated_bytes(Register var_size_in_bytes,
|
||||
int con_size_in_bytes,
|
||||
Register t1) {
|
||||
// Bump total bytes allocated by this thread
|
||||
assert(t1->is_global(), "must be global reg"); // so all 64 bits are saved on a context switch
|
||||
assert_different_registers(var_size_in_bytes, t1);
|
||||
// v8 support has gone the way of the dodo
|
||||
ldx(G2_thread, in_bytes(JavaThread::allocated_bytes_offset()), t1);
|
||||
if (var_size_in_bytes->is_valid()) {
|
||||
add(t1, var_size_in_bytes, t1);
|
||||
} else {
|
||||
add(t1, con_size_in_bytes, t1);
|
||||
}
|
||||
stx(t1, G2_thread, in_bytes(JavaThread::allocated_bytes_offset()));
|
||||
}
|
||||
|
||||
Assembler::Condition MacroAssembler::negate_condition(Assembler::Condition cond) {
|
||||
switch (cond) {
|
||||
// Note some conditions are synonyms for others
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -1884,23 +1884,24 @@ public:
|
||||
void sethi(const AddressLiteral& addrlit, Register d);
|
||||
void patchable_sethi(const AddressLiteral& addrlit, Register d);
|
||||
|
||||
// compute the size of a sethi/set
|
||||
static int size_of_sethi( address a, bool worst_case = false );
|
||||
static int worst_case_size_of_set();
|
||||
// compute the number of instructions for a sethi/set
|
||||
static int insts_for_sethi( address a, bool worst_case = false );
|
||||
static int worst_case_insts_for_set();
|
||||
|
||||
// set may be either setsw or setuw (high 32 bits may be zero or sign)
|
||||
private:
|
||||
void internal_set(const AddressLiteral& al, Register d, bool ForceRelocatable);
|
||||
static int insts_for_internal_set(intptr_t value);
|
||||
public:
|
||||
void set(const AddressLiteral& addrlit, Register d);
|
||||
void set(intptr_t value, Register d);
|
||||
void set(address addr, Register d, RelocationHolder const& rspec);
|
||||
static int insts_for_set(intptr_t value) { return insts_for_internal_set(value); }
|
||||
|
||||
void patchable_set(const AddressLiteral& addrlit, Register d);
|
||||
void patchable_set(intptr_t value, Register d);
|
||||
void set64(jlong value, Register d, Register tmp);
|
||||
|
||||
// Compute size of set64.
|
||||
static int size_of_set64(jlong value);
|
||||
static int insts_for_set64(jlong value);
|
||||
|
||||
// sign-extend 32 to 64
|
||||
inline void signx( Register s, Register d ) { sra( s, G0, d); }
|
||||
@ -2388,6 +2389,7 @@ public:
|
||||
Label& slow_case // continuation point if fast allocation fails
|
||||
);
|
||||
void tlab_refill(Label& retry_tlab, Label& try_eden, Label& slow_case);
|
||||
void incr_allocated_bytes(Register var_size_in_bytes, int con_size_in_bytes, Register t1);
|
||||
|
||||
// interface method calling
|
||||
void lookup_interface_method(Register recv_klass,
|
||||
|
||||
@ -1705,8 +1705,7 @@ void LIR_Assembler::comp_fl2i(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Op
|
||||
}
|
||||
|
||||
|
||||
void LIR_Assembler::cmove(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result) {
|
||||
|
||||
void LIR_Assembler::cmove(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result, BasicType type) {
|
||||
Assembler::Condition acond;
|
||||
switch (condition) {
|
||||
case lir_cond_equal: acond = Assembler::equal; break;
|
||||
@ -1737,7 +1736,12 @@ void LIR_Assembler::cmove(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, L
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
Label skip;
|
||||
__ br(acond, false, Assembler::pt, skip);
|
||||
#ifdef _LP64
|
||||
if (type == T_INT) {
|
||||
__ br(acond, false, Assembler::pt, skip);
|
||||
} else
|
||||
#endif
|
||||
__ brx(acond, false, Assembler::pt, skip); // checks icc on 32bit and xcc on 64bit
|
||||
if (opr1->is_constant() && opr1->type() == T_INT) {
|
||||
Register dest = result->as_register();
|
||||
if (Assembler::is_simm13(opr1->as_jint())) {
|
||||
@ -2688,6 +2692,11 @@ void LIR_Assembler::emit_compare_and_swap(LIR_OpCompareAndSwap* op) {
|
||||
#ifdef _LP64
|
||||
__ mov(cmp_value_lo, t1);
|
||||
__ mov(new_value_lo, t2);
|
||||
// perform the compare and swap operation
|
||||
__ casx(addr, t1, t2);
|
||||
// generate condition code - if the swap succeeded, t2 ("new value" reg) was
|
||||
// overwritten with the original value in "addr" and will be equal to t1.
|
||||
__ cmp(t1, t2);
|
||||
#else
|
||||
// move high and low halves of long values into single registers
|
||||
__ sllx(cmp_value_hi, 32, t1); // shift high half into temp reg
|
||||
@ -2696,13 +2705,15 @@ void LIR_Assembler::emit_compare_and_swap(LIR_OpCompareAndSwap* op) {
|
||||
__ sllx(new_value_hi, 32, t2);
|
||||
__ srl(new_value_lo, 0, new_value_lo);
|
||||
__ or3(t2, new_value_lo, t2); // t2 holds 64-bit value to swap
|
||||
#endif
|
||||
// perform the compare and swap operation
|
||||
__ casx(addr, t1, t2);
|
||||
// generate condition code - if the swap succeeded, t2 ("new value" reg) was
|
||||
// overwritten with the original value in "addr" and will be equal to t1.
|
||||
__ cmp(t1, t2);
|
||||
|
||||
// Produce icc flag for 32bit.
|
||||
__ sub(t1, t2, t2);
|
||||
__ srlx(t2, 32, t1);
|
||||
__ orcc(t2, t1, G0);
|
||||
#endif
|
||||
} else if (op->code() == lir_cas_int || op->code() == lir_cas_obj) {
|
||||
Register addr = op->addr()->as_pointer_register();
|
||||
Register cmp_value = op->cmp_value()->as_register();
|
||||
|
||||
@ -662,7 +662,7 @@ void LIRGenerator::do_AttemptUpdate(Intrinsic* x) {
|
||||
|
||||
// generate conditional move of boolean result
|
||||
LIR_Opr result = rlock_result(x);
|
||||
__ cmove(lir_cond_equal, LIR_OprFact::intConst(1), LIR_OprFact::intConst(0), result);
|
||||
__ cmove(lir_cond_equal, LIR_OprFact::intConst(1), LIR_OprFact::intConst(0), result, T_LONG);
|
||||
}
|
||||
|
||||
|
||||
@ -699,10 +699,10 @@ void LIRGenerator::do_CompareAndSwap(Intrinsic* x, ValueType* type) {
|
||||
else {
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
|
||||
// generate conditional move of boolean result
|
||||
LIR_Opr result = rlock_result(x);
|
||||
__ cmove(lir_cond_equal, LIR_OprFact::intConst(1), LIR_OprFact::intConst(0), result);
|
||||
__ cmove(lir_cond_equal, LIR_OprFact::intConst(1), LIR_OprFact::intConst(0),
|
||||
result, as_BasicType(type));
|
||||
if (type == objectType) { // Write-barrier needed for Object fields.
|
||||
// Precise card mark since could either be object or array
|
||||
post_barrier(addr, val.result());
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user