Merge
This commit is contained in:
commit
a65470b002
@ -97,3 +97,4 @@ a12a9e78df8a9d534da0b4a244ed68f0de0bd58e jdk7-b118
|
|||||||
366ff0b6d2151595629806b033e2e1497e3a55d4 jdk7-b120
|
366ff0b6d2151595629806b033e2e1497e3a55d4 jdk7-b120
|
||||||
2c2d4f88637b488014c37e1a2eb401f68bca8838 jdk7-b121
|
2c2d4f88637b488014c37e1a2eb401f68bca8838 jdk7-b121
|
||||||
f1591eed71f64f6eba79fb7426f5616cc4dfea73 jdk7-b122
|
f1591eed71f64f6eba79fb7426f5616cc4dfea73 jdk7-b122
|
||||||
|
ed6950da30cf1e8904b4bdb034d471647942271f jdk7-b123
|
||||||
|
13
Makefile
13
Makefile
@ -156,12 +156,6 @@ ifeq ($(BUILD_DEPLOY), true)
|
|||||||
clobber:: deploy-clobber
|
clobber:: deploy-clobber
|
||||||
endif
|
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.
|
# The debug build, fastdebug or debug. Needs special handling.
|
||||||
# Note that debug builds do NOT do INSTALL steps, but must be done
|
# 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.
|
# 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 ($(BUILD_JDK), true)
|
||||||
ifeq ($(BUNDLE_RULES_AVAILABLE), true)
|
ifeq ($(BUNDLE_RULES_AVAILABLE), true)
|
||||||
|
|
||||||
OPENJDK_PLUGS=$(ABS_OUTPUTDIR)/$(OPENJDK_BINARY_PLUGS_INAME)
|
|
||||||
OPENJDK_OUTPUTDIR=$(ABS_OUTPUTDIR)/open-output
|
OPENJDK_OUTPUTDIR=$(ABS_OUTPUTDIR)/open-output
|
||||||
OPENJDK_BUILD_NAME \
|
OPENJDK_BUILD_NAME \
|
||||||
= openjdk-$(JDK_MINOR_VERSION)-$(BUILD_NUMBER)-$(PLATFORM)-$(ARCH)-$(BUNDLE_DATE)
|
= openjdk-$(JDK_MINOR_VERSION)-$(BUILD_NUMBER)-$(PLATFORM)-$(ARCH)-$(BUNDLE_DATE)
|
||||||
@ -330,7 +323,6 @@ openjdk_build:
|
|||||||
GENERATE_DOCS=false \
|
GENERATE_DOCS=false \
|
||||||
ALT_JDK_DEVTOOLS_DIR=$(JDK_DEVTOOLS_DIR) \
|
ALT_JDK_DEVTOOLS_DIR=$(JDK_DEVTOOLS_DIR) \
|
||||||
ALT_OUTPUTDIR=$(OPENJDK_OUTPUTDIR) \
|
ALT_OUTPUTDIR=$(OPENJDK_OUTPUTDIR) \
|
||||||
ALT_BINARY_PLUGS_PATH=$(OPENJDK_PLUGS) \
|
|
||||||
ALT_BOOTDIR=$(OPENJDK_BOOTDIR) \
|
ALT_BOOTDIR=$(OPENJDK_BOOTDIR) \
|
||||||
ALT_JDK_IMPORT_PATH=$(OPENJDK_IMPORTJDK) \
|
ALT_JDK_IMPORT_PATH=$(OPENJDK_IMPORTJDK) \
|
||||||
product_build )
|
product_build )
|
||||||
@ -456,7 +448,6 @@ CACERTS_FILE.desc = Location of certificates file
|
|||||||
DEVTOOLS_PATH.desc = Directory containing zip and gnumake
|
DEVTOOLS_PATH.desc = Directory containing zip and gnumake
|
||||||
CUPS_HEADERS_PATH.desc = Include directory location for CUPS header files
|
CUPS_HEADERS_PATH.desc = Include directory location for CUPS header files
|
||||||
DXSDK_PATH.desc = Root directory of DirectX SDK
|
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
|
MSVCRT_DLL_PATH.desc = Directory containing mscvrt.dll
|
||||||
|
|
||||||
# Make variables to print out (description and value)
|
# Make variables to print out (description and value)
|
||||||
@ -487,12 +478,10 @@ ifeq ($(PLATFORM), windows)
|
|||||||
|
|
||||||
VARIABLE_PRINTVAL_LIST += \
|
VARIABLE_PRINTVAL_LIST += \
|
||||||
DXSDK_PATH \
|
DXSDK_PATH \
|
||||||
MSDEVTOOLS_PATH \
|
|
||||||
MSVCRT_DLL_PATH
|
MSVCRT_DLL_PATH
|
||||||
|
|
||||||
VARIABLE_CHECKDIR_LIST += \
|
VARIABLE_CHECKDIR_LIST += \
|
||||||
DXSDK_PATH \
|
DXSDK_PATH \
|
||||||
MSDEVTOOLS_PATH \
|
|
||||||
MSVCRT_DLL_PATH
|
MSVCRT_DLL_PATH
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -548,7 +537,7 @@ examples_help:
|
|||||||
"
|
"
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Source and binary plug bundling
|
# Source bundling
|
||||||
################################################################
|
################################################################
|
||||||
ifeq ($(BUNDLE_RULES_AVAILABLE), true)
|
ifeq ($(BUNDLE_RULES_AVAILABLE), true)
|
||||||
include $(BUNDLE_RULES)
|
include $(BUNDLE_RULES)
|
||||||
|
38
README
38
README
@ -1,28 +1,38 @@
|
|||||||
README:
|
README:
|
||||||
This file should be located at the top of the OpenJDK Mercurial repository
|
This file should be located at the top of the OpenJDK Mercurial root
|
||||||
forest. This top or enclosing repository will include a "make" directory,
|
repository. This root repository will include a "make" directory,
|
||||||
and a Makefile at the very top of the repository.
|
and a Makefile for building the entire OpenJDK.
|
||||||
It should also include the 6 repositories: "jdk", "hotspot", "langtools",
|
A full OpenJDK repository set (forest) should also include the following
|
||||||
"corba", "jaxws" and "jaxp".
|
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.
|
See http://openjdk.java.net/ for more information about the OpenJDK.
|
||||||
|
|
||||||
Simple Build Instructions:
|
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
|
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
|
2. Check the sanity of doing a build with your current system:
|
||||||
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:
|
|
||||||
gnumake sanity
|
gnumake sanity
|
||||||
See README-builds.html if you run into problems.
|
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
|
gnumake all
|
||||||
The resulting JDK image should be found in build/*/j2sdk-image
|
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
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,5 @@ f5603a6e50422046ebc0d2f1671d55cb8f1bf1e9 jdk7-b120
|
|||||||
3f3653ab7af8dc1ddb9fa75dad56bf94f89e81a8 jdk7-b121
|
3f3653ab7af8dc1ddb9fa75dad56bf94f89e81a8 jdk7-b121
|
||||||
3a548dc9cb456110ca8fc1514441a8c3bda0014d jdk7-b122
|
3a548dc9cb456110ca8fc1514441a8c3bda0014d jdk7-b122
|
||||||
5484e7c53fa7da5e869902437ee08a9ae10c1c69 hs20-b03
|
5484e7c53fa7da5e869902437ee08a9ae10c1c69 hs20-b03
|
||||||
|
9669f9b284108a9ee0a0ccbe215c37a130c9dcf5 jdk7-b123
|
||||||
|
9669f9b284108a9ee0a0ccbe215c37a130c9dcf5 hs20-b04
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2010
|
|||||||
|
|
||||||
HS_MAJOR_VER=20
|
HS_MAJOR_VER=20
|
||||||
HS_MINOR_VER=0
|
HS_MINOR_VER=0
|
||||||
HS_BUILD_NUMBER=04
|
HS_BUILD_NUMBER=05
|
||||||
|
|
||||||
JDK_MAJOR_VER=1
|
JDK_MAJOR_VER=1
|
||||||
JDK_MINOR_VER=7
|
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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# Copyright 2008, 2010 Red Hat, Inc.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
@echo off
|
@echo off
|
||||||
REM
|
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 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
REM
|
REM
|
||||||
REM This code is free software; you can redistribute it and/or modify it
|
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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
//
|
//
|
||||||
// This code is free software; you can redistribute it and/or modify it
|
// This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -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.
|
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
//
|
//
|
||||||
// This code is free software; you can redistribute it and/or modify it
|
// This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2004, 2009, 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.
|
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
//
|
//
|
||||||
// This code is free software; you can redistribute it and/or modify it
|
// This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1825,23 +1825,11 @@ void ConcurrentMark::completeCleanup() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool G1CMIsAliveClosure::do_object_b(oop obj) {
|
||||||
class G1CMIsAliveClosure: public BoolObjectClosure {
|
HeapWord* addr = (HeapWord*)obj;
|
||||||
G1CollectedHeap* _g1;
|
return addr != NULL &&
|
||||||
public:
|
(!_g1->is_in_g1_reserved(addr) || !_g1->is_obj_ill(obj));
|
||||||
G1CMIsAliveClosure(G1CollectedHeap* g1) :
|
}
|
||||||
_g1(g1)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void do_object(oop obj) {
|
|
||||||
assert(false, "not to be invoked");
|
|
||||||
}
|
|
||||||
bool do_object_b(oop obj) {
|
|
||||||
HeapWord* addr = (HeapWord*)obj;
|
|
||||||
return addr != NULL &&
|
|
||||||
(!_g1->is_in_g1_reserved(addr) || !_g1->is_obj_ill(obj));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class G1CMKeepAliveClosure: public OopClosure {
|
class G1CMKeepAliveClosure: public OopClosure {
|
||||||
G1CollectedHeap* _g1;
|
G1CollectedHeap* _g1;
|
||||||
@ -1896,16 +1884,15 @@ void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) {
|
|||||||
rp->setup_policy(clear_all_soft_refs);
|
rp->setup_policy(clear_all_soft_refs);
|
||||||
assert(_markStack.isEmpty(), "mark stack should be empty");
|
assert(_markStack.isEmpty(), "mark stack should be empty");
|
||||||
|
|
||||||
G1CMIsAliveClosure g1IsAliveClosure (g1h);
|
G1CMIsAliveClosure g1_is_alive(g1h);
|
||||||
G1CMKeepAliveClosure g1KeepAliveClosure(g1h, this, nextMarkBitMap());
|
G1CMKeepAliveClosure g1_keep_alive(g1h, this, nextMarkBitMap());
|
||||||
G1CMDrainMarkingStackClosure
|
G1CMDrainMarkingStackClosure
|
||||||
g1DrainMarkingStackClosure(nextMarkBitMap(), &_markStack,
|
g1_drain_mark_stack(nextMarkBitMap(), &_markStack, &g1_keep_alive);
|
||||||
&g1KeepAliveClosure);
|
|
||||||
|
|
||||||
// XXXYYY Also: copy the parallel ref processing code from CMS.
|
// XXXYYY Also: copy the parallel ref processing code from CMS.
|
||||||
rp->process_discovered_references(&g1IsAliveClosure,
|
rp->process_discovered_references(&g1_is_alive,
|
||||||
&g1KeepAliveClosure,
|
&g1_keep_alive,
|
||||||
&g1DrainMarkingStackClosure,
|
&g1_drain_mark_stack,
|
||||||
NULL);
|
NULL);
|
||||||
assert(_markStack.overflow() || _markStack.isEmpty(),
|
assert(_markStack.overflow() || _markStack.isEmpty(),
|
||||||
"mark stack should be empty (unless it overflowed)");
|
"mark stack should be empty (unless it overflowed)");
|
||||||
@ -1918,8 +1905,8 @@ void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) {
|
|||||||
assert(!rp->discovery_enabled(), "should have been disabled");
|
assert(!rp->discovery_enabled(), "should have been disabled");
|
||||||
|
|
||||||
// Now clean up stale oops in SymbolTable and StringTable
|
// Now clean up stale oops in SymbolTable and StringTable
|
||||||
SymbolTable::unlink(&g1IsAliveClosure);
|
SymbolTable::unlink(&g1_is_alive);
|
||||||
StringTable::unlink(&g1IsAliveClosure);
|
StringTable::unlink(&g1_is_alive);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConcurrentMark::swapMarkBitMaps() {
|
void ConcurrentMark::swapMarkBitMaps() {
|
||||||
|
@ -33,6 +33,25 @@ class CMTask;
|
|||||||
typedef GenericTaskQueue<oop> CMTaskQueue;
|
typedef GenericTaskQueue<oop> CMTaskQueue;
|
||||||
typedef GenericTaskQueueSet<CMTaskQueue> CMTaskQueueSet;
|
typedef GenericTaskQueueSet<CMTaskQueue> CMTaskQueueSet;
|
||||||
|
|
||||||
|
// Closure used by CM during concurrent reference discovery
|
||||||
|
// and reference processing (during remarking) to determine
|
||||||
|
// if a particular object is alive. It is primarily used
|
||||||
|
// to determine if referents of discovered reference objects
|
||||||
|
// are alive. An instance is also embedded into the
|
||||||
|
// reference processor as the _is_alive_non_header field
|
||||||
|
class G1CMIsAliveClosure: public BoolObjectClosure {
|
||||||
|
G1CollectedHeap* _g1;
|
||||||
|
public:
|
||||||
|
G1CMIsAliveClosure(G1CollectedHeap* g1) :
|
||||||
|
_g1(g1)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void do_object(oop obj) {
|
||||||
|
ShouldNotCallThis();
|
||||||
|
}
|
||||||
|
bool do_object_b(oop obj);
|
||||||
|
};
|
||||||
|
|
||||||
// A generic CM bit map. This is essentially a wrapper around the BitMap
|
// A generic CM bit map. This is essentially a wrapper around the BitMap
|
||||||
// class, with one bit per (1<<_shifter) HeapWords.
|
// class, with one bit per (1<<_shifter) HeapWords.
|
||||||
|
|
||||||
|
@ -1192,6 +1192,7 @@ bool G1CollectedHeap::do_collection(bool explicit_gc,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DTraceGCProbeMarker gc_probe_marker(true /* full */);
|
||||||
ResourceMark rm;
|
ResourceMark rm;
|
||||||
|
|
||||||
if (PrintHeapAtGC) {
|
if (PrintHeapAtGC) {
|
||||||
@ -1768,6 +1769,7 @@ G1CollectedHeap::G1CollectedHeap(G1CollectorPolicy* policy_) :
|
|||||||
_g1_policy(policy_),
|
_g1_policy(policy_),
|
||||||
_dirty_card_queue_set(false),
|
_dirty_card_queue_set(false),
|
||||||
_into_cset_dirty_card_queue_set(false),
|
_into_cset_dirty_card_queue_set(false),
|
||||||
|
_is_alive_closure(this),
|
||||||
_ref_processor(NULL),
|
_ref_processor(NULL),
|
||||||
_process_strong_tasks(new SubTasksDone(G1H_PS_NumElements)),
|
_process_strong_tasks(new SubTasksDone(G1H_PS_NumElements)),
|
||||||
_bot_shared(NULL),
|
_bot_shared(NULL),
|
||||||
@ -2061,7 +2063,8 @@ void G1CollectedHeap::ref_processing_init() {
|
|||||||
mr, // span
|
mr, // span
|
||||||
false, // Reference discovery is not atomic
|
false, // Reference discovery is not atomic
|
||||||
true, // mt_discovery
|
true, // mt_discovery
|
||||||
NULL, // is alive closure: need to fill this in for efficiency
|
&_is_alive_closure, // is alive closure
|
||||||
|
// for efficiency
|
||||||
ParallelGCThreads,
|
ParallelGCThreads,
|
||||||
ParallelRefProcEnabled,
|
ParallelRefProcEnabled,
|
||||||
true); // Setting next fields of discovered
|
true); // Setting next fields of discovered
|
||||||
@ -3211,13 +3214,14 @@ G1CollectedHeap::do_collection_pause_at_safepoint(double target_pause_time_ms) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DTraceGCProbeMarker gc_probe_marker(false /* full */);
|
||||||
|
ResourceMark rm;
|
||||||
|
|
||||||
if (PrintHeapAtGC) {
|
if (PrintHeapAtGC) {
|
||||||
Universe::print_heap_before_gc();
|
Universe::print_heap_before_gc();
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ResourceMark rm;
|
|
||||||
|
|
||||||
// This call will decide whether this pause is an initial-mark
|
// This call will decide whether this pause is an initial-mark
|
||||||
// pause. If it is, during_initial_mark_pause() will return true
|
// pause. If it is, during_initial_mark_pause() will return true
|
||||||
// for the duration of this pause.
|
// for the duration of this pause.
|
||||||
@ -3956,8 +3960,6 @@ void G1CollectedHeap::remove_self_forwarding_pointers() {
|
|||||||
// Now restore saved marks, if any.
|
// Now restore saved marks, if any.
|
||||||
if (_objs_with_preserved_marks != NULL) {
|
if (_objs_with_preserved_marks != NULL) {
|
||||||
assert(_preserved_marks_of_objs != NULL, "Both or none.");
|
assert(_preserved_marks_of_objs != NULL, "Both or none.");
|
||||||
assert(_objs_with_preserved_marks->length() ==
|
|
||||||
_preserved_marks_of_objs->length(), "Both or none.");
|
|
||||||
guarantee(_objs_with_preserved_marks->length() ==
|
guarantee(_objs_with_preserved_marks->length() ==
|
||||||
_preserved_marks_of_objs->length(), "Both or none.");
|
_preserved_marks_of_objs->length(), "Both or none.");
|
||||||
for (int i = 0; i < _objs_with_preserved_marks->length(); i++) {
|
for (int i = 0; i < _objs_with_preserved_marks->length(); i++) {
|
||||||
@ -4052,7 +4054,10 @@ void G1CollectedHeap::handle_evacuation_failure_common(oop old, markOop m) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void G1CollectedHeap::preserve_mark_if_necessary(oop obj, markOop m) {
|
void G1CollectedHeap::preserve_mark_if_necessary(oop obj, markOop m) {
|
||||||
if (m != markOopDesc::prototype()) {
|
assert(evacuation_failed(), "Oversaving!");
|
||||||
|
// We want to call the "for_promotion_failure" version only in the
|
||||||
|
// case of a promotion failure.
|
||||||
|
if (m->must_be_preserved_for_promotion_failure(obj)) {
|
||||||
if (_objs_with_preserved_marks == NULL) {
|
if (_objs_with_preserved_marks == NULL) {
|
||||||
assert(_preserved_marks_of_objs == NULL, "Both or none.");
|
assert(_preserved_marks_of_objs == NULL, "Both or none.");
|
||||||
_objs_with_preserved_marks =
|
_objs_with_preserved_marks =
|
||||||
|
@ -849,6 +849,12 @@ protected:
|
|||||||
void print_gc_alloc_regions();
|
void print_gc_alloc_regions();
|
||||||
#endif // !PRODUCT
|
#endif // !PRODUCT
|
||||||
|
|
||||||
|
// Instance of the concurrent mark is_alive closure for embedding
|
||||||
|
// into the reference processor as the is_alive_non_header. This
|
||||||
|
// prevents unnecessary additions to the discovered lists during
|
||||||
|
// concurrent discovery.
|
||||||
|
G1CMIsAliveClosure _is_alive_closure;
|
||||||
|
|
||||||
// ("Weak") Reference processing support
|
// ("Weak") Reference processing support
|
||||||
ReferenceProcessor* _ref_processor;
|
ReferenceProcessor* _ref_processor;
|
||||||
|
|
||||||
@ -893,7 +899,7 @@ public:
|
|||||||
// specified by the policy object.
|
// specified by the policy object.
|
||||||
jint initialize();
|
jint initialize();
|
||||||
|
|
||||||
void ref_processing_init();
|
virtual void ref_processing_init();
|
||||||
|
|
||||||
void set_par_threads(int t) {
|
void set_par_threads(int t) {
|
||||||
SharedHeap::set_par_threads(t);
|
SharedHeap::set_par_threads(t);
|
||||||
|
@ -1058,10 +1058,11 @@ bool ParNewGeneration::is_legal_forward_ptr(oop p) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ParNewGeneration::preserve_mark_if_necessary(oop obj, markOop m) {
|
void ParNewGeneration::preserve_mark_if_necessary(oop obj, markOop m) {
|
||||||
if ((m != markOopDesc::prototype()) &&
|
if (m->must_be_preserved_for_promotion_failure(obj)) {
|
||||||
(!UseBiasedLocking || (m != markOopDesc::biased_locking_prototype()))) {
|
// We should really have separate per-worker stacks, rather
|
||||||
|
// than use locking of a common pair of stacks.
|
||||||
MutexLocker ml(ParGCRareEvent_lock);
|
MutexLocker ml(ParGCRareEvent_lock);
|
||||||
DefNewGeneration::preserve_mark_if_necessary(obj, m);
|
preserve_mark(obj, m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -694,6 +694,8 @@ void PSScavenge::clean_up_failed_promotion() {
|
|||||||
void PSScavenge::oop_promotion_failed(oop obj, markOop obj_mark) {
|
void PSScavenge::oop_promotion_failed(oop obj, markOop obj_mark) {
|
||||||
_promotion_failed = true;
|
_promotion_failed = true;
|
||||||
if (obj_mark->must_be_preserved_for_promotion_failure(obj)) {
|
if (obj_mark->must_be_preserved_for_promotion_failure(obj)) {
|
||||||
|
// Should use per-worker private stakcs hetre rather than
|
||||||
|
// locking a common pair of stacks.
|
||||||
ThreadCritical tc;
|
ThreadCritical tc;
|
||||||
_preserved_oop_stack.push(obj);
|
_preserved_oop_stack.push(obj);
|
||||||
_preserved_mark_stack.push(obj_mark);
|
_preserved_mark_stack.push(obj_mark);
|
||||||
|
@ -209,4 +209,15 @@ class VM_GenCollectForPermanentAllocation: public VM_GC_Operation {
|
|||||||
HeapWord* result() const { return _res; }
|
HeapWord* result() const { return _res; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class DTraceGCProbeMarker : public StackObj {
|
||||||
|
public:
|
||||||
|
DTraceGCProbeMarker(bool full) {
|
||||||
|
VM_GC_Operation::notify_gc_begin(full);
|
||||||
|
}
|
||||||
|
|
||||||
|
~DTraceGCProbeMarker() {
|
||||||
|
VM_GC_Operation::notify_gc_end();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_VMGCOPERATIONS_HPP
|
#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_VMGCOPERATIONS_HPP
|
||||||
|
@ -684,23 +684,28 @@ void DefNewGeneration::remove_forwarding_pointers() {
|
|||||||
_preserved_marks_of_objs.clear(true);
|
_preserved_marks_of_objs.clear(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DefNewGeneration::preserve_mark(oop obj, markOop m) {
|
||||||
|
assert(promotion_failed() && m->must_be_preserved_for_promotion_failure(obj),
|
||||||
|
"Oversaving!");
|
||||||
|
_objs_with_preserved_marks.push(obj);
|
||||||
|
_preserved_marks_of_objs.push(m);
|
||||||
|
}
|
||||||
|
|
||||||
void DefNewGeneration::preserve_mark_if_necessary(oop obj, markOop m) {
|
void DefNewGeneration::preserve_mark_if_necessary(oop obj, markOop m) {
|
||||||
if (m->must_be_preserved_for_promotion_failure(obj)) {
|
if (m->must_be_preserved_for_promotion_failure(obj)) {
|
||||||
_objs_with_preserved_marks.push(obj);
|
preserve_mark(obj, m);
|
||||||
_preserved_marks_of_objs.push(m);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefNewGeneration::handle_promotion_failure(oop old) {
|
void DefNewGeneration::handle_promotion_failure(oop old) {
|
||||||
preserve_mark_if_necessary(old, old->mark());
|
if (PrintPromotionFailure && !_promotion_failed) {
|
||||||
if (!_promotion_failed && PrintPromotionFailure) {
|
|
||||||
gclog_or_tty->print(" (promotion failure size = " SIZE_FORMAT ") ",
|
gclog_or_tty->print(" (promotion failure size = " SIZE_FORMAT ") ",
|
||||||
old->size());
|
old->size());
|
||||||
}
|
}
|
||||||
|
_promotion_failed = true;
|
||||||
|
preserve_mark_if_necessary(old, old->mark());
|
||||||
// forward to self
|
// forward to self
|
||||||
old->forward_to(old);
|
old->forward_to(old);
|
||||||
_promotion_failed = true;
|
|
||||||
|
|
||||||
_promo_failure_scan_stack.push(old);
|
_promo_failure_scan_stack.push(old);
|
||||||
|
|
||||||
|
@ -85,6 +85,7 @@ protected:
|
|||||||
// Preserve the mark of "obj", if necessary, in preparation for its mark
|
// Preserve the mark of "obj", if necessary, in preparation for its mark
|
||||||
// word being overwritten with a self-forwarding-pointer.
|
// word being overwritten with a self-forwarding-pointer.
|
||||||
void preserve_mark_if_necessary(oop obj, markOop m);
|
void preserve_mark_if_necessary(oop obj, markOop m);
|
||||||
|
void preserve_mark(oop obj, markOop m); // work routine used by the above
|
||||||
|
|
||||||
// Together, these keep <object with a preserved mark, mark value> pairs.
|
// Together, these keep <object with a preserved mark, mark value> pairs.
|
||||||
// They should always contain the same number of elements.
|
// They should always contain the same number of elements.
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "oops/markOop.hpp"
|
#include "oops/markOop.hpp"
|
||||||
#include "runtime/globals.hpp"
|
#include "runtime/globals.hpp"
|
||||||
|
|
||||||
// Should this header be preserved during GC?
|
// Should this header be preserved during GC (when biased locking is enabled)?
|
||||||
inline bool markOopDesc::must_be_preserved_with_bias(oop obj_containing_mark) const {
|
inline bool markOopDesc::must_be_preserved_with_bias(oop obj_containing_mark) const {
|
||||||
assert(UseBiasedLocking, "unexpected");
|
assert(UseBiasedLocking, "unexpected");
|
||||||
if (has_bias_pattern()) {
|
if (has_bias_pattern()) {
|
||||||
@ -47,14 +47,15 @@ inline bool markOopDesc::must_be_preserved_with_bias(oop obj_containing_mark) co
|
|||||||
return (!is_unlocked() || !has_no_hash());
|
return (!is_unlocked() || !has_no_hash());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Should this header be preserved during GC?
|
||||||
inline bool markOopDesc::must_be_preserved(oop obj_containing_mark) const {
|
inline bool markOopDesc::must_be_preserved(oop obj_containing_mark) const {
|
||||||
if (!UseBiasedLocking)
|
if (!UseBiasedLocking)
|
||||||
return (!is_unlocked() || !has_no_hash());
|
return (!is_unlocked() || !has_no_hash());
|
||||||
return must_be_preserved_with_bias(obj_containing_mark);
|
return must_be_preserved_with_bias(obj_containing_mark);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should this header (including its age bits) be preserved in the
|
// Should this header be preserved in the case of a promotion failure
|
||||||
// case of a promotion failure during scavenge?
|
// during scavenge (when biased locking is enabled)?
|
||||||
inline bool markOopDesc::must_be_preserved_with_bias_for_promotion_failure(oop obj_containing_mark) const {
|
inline bool markOopDesc::must_be_preserved_with_bias_for_promotion_failure(oop obj_containing_mark) const {
|
||||||
assert(UseBiasedLocking, "unexpected");
|
assert(UseBiasedLocking, "unexpected");
|
||||||
// We don't explicitly save off the mark words of biased and
|
// We don't explicitly save off the mark words of biased and
|
||||||
@ -70,18 +71,20 @@ inline bool markOopDesc::must_be_preserved_with_bias_for_promotion_failure(oop o
|
|||||||
prototype_for_object(obj_containing_mark)->has_bias_pattern()) {
|
prototype_for_object(obj_containing_mark)->has_bias_pattern()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return (this != prototype());
|
return (!is_unlocked() || !has_no_hash());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Should this header be preserved in the case of a promotion failure
|
||||||
|
// during scavenge?
|
||||||
inline bool markOopDesc::must_be_preserved_for_promotion_failure(oop obj_containing_mark) const {
|
inline bool markOopDesc::must_be_preserved_for_promotion_failure(oop obj_containing_mark) const {
|
||||||
if (!UseBiasedLocking)
|
if (!UseBiasedLocking)
|
||||||
return (this != prototype());
|
return (!is_unlocked() || !has_no_hash());
|
||||||
return must_be_preserved_with_bias_for_promotion_failure(obj_containing_mark);
|
return must_be_preserved_with_bias_for_promotion_failure(obj_containing_mark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Should this header (including its age bits) be preserved in the
|
// Same as must_be_preserved_with_bias_for_promotion_failure() except that
|
||||||
// case of a scavenge in which CMS is the old generation?
|
// it takes a klassOop argument, instead of the object of which this is the mark word.
|
||||||
inline bool markOopDesc::must_be_preserved_with_bias_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const {
|
inline bool markOopDesc::must_be_preserved_with_bias_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const {
|
||||||
assert(UseBiasedLocking, "unexpected");
|
assert(UseBiasedLocking, "unexpected");
|
||||||
// CMS scavenges preserve mark words in similar fashion to promotion failures; see above
|
// CMS scavenges preserve mark words in similar fashion to promotion failures; see above
|
||||||
@ -89,11 +92,14 @@ inline bool markOopDesc::must_be_preserved_with_bias_for_cms_scavenge(klassOop k
|
|||||||
klass_of_obj_containing_mark->klass_part()->prototype_header()->has_bias_pattern()) {
|
klass_of_obj_containing_mark->klass_part()->prototype_header()->has_bias_pattern()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return (this != prototype());
|
return (!is_unlocked() || !has_no_hash());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Same as must_be_preserved_for_promotion_failure() except that
|
||||||
|
// it takes a klassOop argument, instead of the object of which this is the mark word.
|
||||||
inline bool markOopDesc::must_be_preserved_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const {
|
inline bool markOopDesc::must_be_preserved_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const {
|
||||||
if (!UseBiasedLocking)
|
if (!UseBiasedLocking)
|
||||||
return (this != prototype());
|
return (!is_unlocked() || !has_no_hash());
|
||||||
return must_be_preserved_with_bias_for_cms_scavenge(klass_of_obj_containing_mark);
|
return must_be_preserved_with_bias_for_cms_scavenge(klass_of_obj_containing_mark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
104
make/scripts/hgforest.sh
Normal file
104
make/scripts/hgforest.sh
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2009, 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Shell script for a fast parallel forest command
|
||||||
|
|
||||||
|
tmp=/tmp/forest.$$
|
||||||
|
rm -f -r ${tmp}
|
||||||
|
mkdir -p ${tmp}
|
||||||
|
|
||||||
|
# Remove tmp area on A. B. Normal termination
|
||||||
|
trap 'rm -f -r ${tmp}' KILL
|
||||||
|
trap 'rm -f -r ${tmp}' EXIT
|
||||||
|
|
||||||
|
# Only look in specific locations for possible forests (avoids long searches)
|
||||||
|
pull_default=""
|
||||||
|
if [ "$1" = "clone" -o "$1" = "fclone" ] ; then
|
||||||
|
subrepos="corba jaxp jaxws langtools jdk hotspot"
|
||||||
|
if [ -f .hg/hgrc ] ; then
|
||||||
|
pull_default=`hg paths default`
|
||||||
|
fi
|
||||||
|
if [ "${pull_default}" = "" ] ; then
|
||||||
|
echo "ERROR: Need initial clone with 'hg paths default' defined"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
repos=""
|
||||||
|
for i in ${subrepos} ; do
|
||||||
|
if [ ! -f ${i}/.hg/hgrc ] ; then
|
||||||
|
repos="${repos} ${i}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
at_a_time=2
|
||||||
|
else
|
||||||
|
hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null`
|
||||||
|
# Derive repository names from the .hg directory locations
|
||||||
|
repos=""
|
||||||
|
for i in ${hgdirs} ; do
|
||||||
|
repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`"
|
||||||
|
done
|
||||||
|
at_a_time=8
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Any repos to deal with?
|
||||||
|
if [ "${repos}" = "" ] ; then
|
||||||
|
echo "No repositories to process."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Echo out what repositories we will process
|
||||||
|
echo "# Repos: ${repos}"
|
||||||
|
|
||||||
|
# Run the supplied command on all repos in parallel, save output until end
|
||||||
|
n=0
|
||||||
|
for i in ${repos} ; do
|
||||||
|
echo "Starting on ${i}"
|
||||||
|
n=`expr ${n} '+' 1`
|
||||||
|
(
|
||||||
|
(
|
||||||
|
if [ "$1" = "clone" -o "$1" = "fclone" ] ; then
|
||||||
|
cline="hg $* ${pull_default}/${i} ${i}"
|
||||||
|
echo "# ${cline}"
|
||||||
|
( eval "${cline}" )
|
||||||
|
else
|
||||||
|
cline="hg $*"
|
||||||
|
echo "# cd ${i} && ${cline}"
|
||||||
|
( cd ${i} && eval "${cline}" )
|
||||||
|
fi
|
||||||
|
echo "# exit code $?"
|
||||||
|
) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) &
|
||||||
|
if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Wait for all hg commands to complete
|
||||||
|
wait
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
rm -f -r ${tmp}
|
||||||
|
|
||||||
|
# Terminate with exit 0 all the time (hard to know when to say "failed")
|
||||||
|
exit 0
|
||||||
|
|
189
make/scripts/update_copyright_year.sh
Normal file
189
make/scripts/update_copyright_year.sh
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
#!/bin/sh -f
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Script to update the Copyright YEAR range in Mercurial sources.
|
||||||
|
# (Originally from xdono, Thanks!)
|
||||||
|
|
||||||
|
if [ "`uname -s`" = "SunOS" ] ; then
|
||||||
|
awk=nawk
|
||||||
|
else
|
||||||
|
awk=awk
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Stop on any error
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Temp area
|
||||||
|
tmp=/tmp/`basename $0`.${USER}.$$
|
||||||
|
rm -f -r ${tmp}
|
||||||
|
mkdir -p ${tmp}
|
||||||
|
total=0
|
||||||
|
|
||||||
|
# This year or supplied year
|
||||||
|
if [ "$1" != "" ] ; then
|
||||||
|
year="$1"
|
||||||
|
else
|
||||||
|
year=`date +%Y`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Return true if it makes sense to edit this file
|
||||||
|
saneFileToCheck()
|
||||||
|
{
|
||||||
|
if [ "$1" != "" -a -f $1 ] ; then
|
||||||
|
isText=`file "$1" | egrep -i '(text|source)' | cat`
|
||||||
|
hasCopyright=`grep 'Copyright' "$1" | cat`
|
||||||
|
lastLineCount=`tail -1 "$1" | wc -l`
|
||||||
|
if [ "${isText}" != "" \
|
||||||
|
-a "${hasCopyright}" != "" \
|
||||||
|
-a ${lastLineCount} -eq 1 ] ; then
|
||||||
|
echo "true"
|
||||||
|
else
|
||||||
|
echo "false"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "false"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Update the copyright year on a file
|
||||||
|
updateFile() # file
|
||||||
|
{
|
||||||
|
changed="false"
|
||||||
|
if [ `saneFileToCheck "$1"` = "true" ] ; then
|
||||||
|
copyright="Copyright (c)"
|
||||||
|
company="Oracle"
|
||||||
|
rm -f $1.OLD
|
||||||
|
mv $1 $1.OLD
|
||||||
|
cat $1.OLD | \
|
||||||
|
sed -e "s@\(${copyright} [12][0-9][0-9][0-9],\) [12][0-9][0-9][0-9], ${company}@\1 ${year}, ${company}@" | \
|
||||||
|
sed -e "s@\(${copyright} [12][0-9][0-9][0-9],\) ${company}@\1 ${year}, ${company}@" | \
|
||||||
|
sed -e "s@${copyright} ${year}, ${year}, ${company}@${copyright} ${year}, ${company}@" \
|
||||||
|
> $1
|
||||||
|
if ! diff -b -w $1.OLD $1 > /dev/null ; then \
|
||||||
|
changed="true"
|
||||||
|
rm -f $1.OLD
|
||||||
|
else
|
||||||
|
rm -f $1
|
||||||
|
mv $1.OLD $1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "${changed}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Update the copyright year on all files changed by this changeset
|
||||||
|
updateChangesetFiles() # changeset
|
||||||
|
{
|
||||||
|
count=0
|
||||||
|
files=${tmp}/files.$1
|
||||||
|
rm -f ${files}
|
||||||
|
hg log --rev $1 -v --template '{files}\n' | expand \
|
||||||
|
| ${awk} -F' ' '{for(i=1;i<=NF;i++)print $i}' \
|
||||||
|
> ${files}
|
||||||
|
if [ -f "${files}" -a -s "${files}" ] ; then
|
||||||
|
copyright="Copyright (c)"
|
||||||
|
company="Oracle"
|
||||||
|
fcount=`cat ${files}| wc -l`
|
||||||
|
for i in `cat ${files}` ; do
|
||||||
|
if [ `updateFile "${i}"` = "true" ] ; then
|
||||||
|
count=`expr ${count} '+' 1`
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ${count} -gt 0 ] ; then
|
||||||
|
printf " UPDATED year on %d of %d files.\n" ${count} ${fcount}
|
||||||
|
total=`expr ${total} '+' ${count}`
|
||||||
|
else
|
||||||
|
printf " None of the %d files were changed.\n" ${fcount}
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf " ERROR: No files changed in the changeset? Must be a mistake.\n"
|
||||||
|
set -x
|
||||||
|
ls -al ${files}
|
||||||
|
hg log --rev $1 -v --template '{files}\n'
|
||||||
|
hg log --rev $1 -v --template '{files}\n' | expand \
|
||||||
|
| ${awk} -F' ' '{for(i=1;i<=NF;i++)print $i}'
|
||||||
|
set +x
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f ${files}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if repository is clean
|
||||||
|
previous=`hg status|wc -l`
|
||||||
|
if [ ${previous} -ne 0 ] ; then
|
||||||
|
echo "WARNING: This repository contains previously edited working set files."
|
||||||
|
echo " hg status | wc -l = `hg status | wc -l`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get all changesets this year
|
||||||
|
all_changesets=${tmp}/all_changesets
|
||||||
|
rm -f ${all_changesets}
|
||||||
|
hg log --no-merges -v -d "${year}-01-01 to ${year}-12-31" --template '{node}\n' > ${all_changesets}
|
||||||
|
|
||||||
|
# Check changeset to see if it is Copyright only changes, filter changesets
|
||||||
|
if [ -s ${all_changesets} ] ; then
|
||||||
|
echo "Changesets made in ${year}: `cat ${all_changesets} | wc -l`"
|
||||||
|
index=0
|
||||||
|
cat ${all_changesets} | while read changeset ; do
|
||||||
|
index=`expr ${index} '+' 1`
|
||||||
|
desc=${tmp}/desc.${changeset}
|
||||||
|
rm -f ${desc}
|
||||||
|
echo "------------------------------------------------"
|
||||||
|
hg log --rev ${changeset} --template '{desc}\n' > ${desc}
|
||||||
|
printf "%d: %s\n%s\n" ${index} "${changeset}" "`cat ${desc}|head -1`"
|
||||||
|
if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then
|
||||||
|
printf " EXCLUDED tag changeset.\n"
|
||||||
|
elif cat ${desc} | fgrep -i rebrand > /dev/null ; then
|
||||||
|
printf " EXCLUDED rebrand changeset.\n"
|
||||||
|
elif cat ${desc} | fgrep -i copyright > /dev/null ; then
|
||||||
|
printf " EXCLUDED copyright changeset.\n"
|
||||||
|
else
|
||||||
|
updateChangesetFiles ${changeset}
|
||||||
|
fi
|
||||||
|
rm -f ${desc}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${total} -gt 0 ] ; then
|
||||||
|
echo "---------------------------------------------"
|
||||||
|
echo "Updated the copyright year on a total of ${total} files."
|
||||||
|
if [ ${previous} -eq 0 ] ; then
|
||||||
|
echo "This count should match the count of modified files in the repository: hg status -m"
|
||||||
|
else
|
||||||
|
echo "WARNING: This repository contained previously edited working set files."
|
||||||
|
fi
|
||||||
|
echo " hg status -m | wc -l = `hg status -m | wc -l`"
|
||||||
|
else
|
||||||
|
echo "---------------------------------------------"
|
||||||
|
echo "No files were changed"
|
||||||
|
if [ ${previous} -ne 0 ] ; then
|
||||||
|
echo "WARNING: This repository contained previously edited working set files."
|
||||||
|
fi
|
||||||
|
echo " hg status -m | wc -l = `hg status -m | wc -l`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
rm -f -r ${tmp}
|
||||||
|
exit 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user