Merge
authorduke
Wed, 05 Jul 2017 17:30:53 +0200
changeset 7670 239a99709040
parent 7669 3ebe17bda998 (current diff)
parent 7663 513bfa580e38 (diff)
child 7673 7ea8a154e93f
Merge
--- a/.hgtags-top-repo	Tue Dec 28 16:12:31 2010 -0800
+++ b/.hgtags-top-repo	Wed Jul 05 17:30:53 2017 +0200
@@ -97,3 +97,4 @@
 366ff0b6d2151595629806b033e2e1497e3a55d4 jdk7-b120
 2c2d4f88637b488014c37e1a2eb401f68bca8838 jdk7-b121
 f1591eed71f64f6eba79fb7426f5616cc4dfea73 jdk7-b122
+ed6950da30cf1e8904b4bdb034d471647942271f jdk7-b123
--- a/Makefile	Tue Dec 28 16:12:31 2010 -0800
+++ b/Makefile	Wed Jul 05 17:30:53 2017 +0200
@@ -156,12 +156,6 @@
   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 @@
   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 @@
 	  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 @@
 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 @@
 
 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 @@
 "
 
 ################################################################
-# Source and binary plug bundling
+# Source bundling
 ################################################################
 ifeq ($(BUNDLE_RULES_AVAILABLE), true)
   include $(BUNDLE_RULES)
--- a/README	Tue Dec 28 16:12:31 2010 -0800
+++ b/README	Wed Jul 05 17:30:53 2017 +0200
@@ -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:
-
-  1. 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.
+  
+  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
 
-  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:
+  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 JDK 6.
+
+  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
 
--- a/README-builds.html	Tue Dec 28 16:12:31 2010 -0800
+++ b/README-builds.html	Wed Jul 05 17:30:53 2017 +0200
@@ -24,12 +24,12 @@
         <h2><a name="introduction">Introduction</a></h2>
         <blockquote>
             <p>
-            This README file contains build instructions for the 
-            <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
-            Building the source code for the 
-            OpenJDK
-            requires
-            a certain degree of technical expertise.
+                This README file contains build instructions for the
+                <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
+                Building the source code for the
+                OpenJDK
+                requires
+                a certain degree of technical expertise.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
@@ -37,18 +37,23 @@
         <blockquote>
             <ul>
                 <li><a href="#introduction">Introduction</a></li>
+                <li><a href="#hg">Use of Mercurial</a>
+                    <ul>
+                        <li><a href="#get_source">Getting the Source</a></li>
+                    </ul>
+                </li>
                 <li><a href="#MBE">Minimum Build Environments</a></li>
                 <li><a href="#SDBE">Specific Developer Build Environments</a>
                     <ul>
                         <li><a href="#fedora">Fedora Linux</a> </li>
                         <li><a href="#centos">CentOS Linux</a> </li>
-		        <li><a href="#debian">Debian GNU/Linux</a></li>
-			<li><a href="#ubuntu">Ubuntu Linux</a> </li>
-		        <li><a href="#opensuse">OpenSUSE</a></li>
-		        <li><a href="#mandriva">Mandriva</a></li>
-		        <li><a href="#opensolaris">OpenSolaris</a></li>
+                        <li><a href="#debian">Debian GNU/Linux</a></li>
+                        <li><a href="#ubuntu">Ubuntu Linux</a> </li>
+                        <li><a href="#opensuse">OpenSUSE</a></li>
+                        <li><a href="#mandriva">Mandriva</a></li>
+                        <li><a href="#opensolaris">OpenSolaris</a></li>
                     </ul>
-		</li>
+                </li>
                 <li><a href="#directories">Source Directory Structure</a> </li>
                 <li><a href="#building">Build Information</a>
                     <ul>
@@ -56,42 +61,42 @@
                         <li><a href="#linux">Basic Linux System Setup</a> </li>
                         <li><a href="#solaris">Basic Solaris System Setup</a> </li>
                         <li><a href="#windows">Basic Windows System Setup</a> </li>
-                        <li><a href="#dependencies">Build Dependencies</a> </li>
-                        <ul>
-                            <li><a href="#bootjdk">Bootstrap JDK</a> </li>
-                            <li><a href="#binaryplugs">Binary Plugs</a> </li>
-                            <li><a href="#importjdk">Optional Import JDK</a> </li>
-                            <li><a href="#ant">Ant</a> </li>
-                            <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
-                            <li><a href="#compilers">Compilers</a> 
-                                <ul>
-                                    <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li>
-                                    <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li>
-                                    <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li>
-                                    <li><a href="#gcc">Linux gcc/binutils</a> </li>
-                                    <li><a href="#studio">Sun Studio</a> </li>
-                                </ul>
-                            </li>
-                            <li><a href="#zip">Zip and Unzip</a> </li>
-                            <li><a href="#freetype">FreeType2 Fonts</a> </li>
-                            <li>Linux and Solaris:
-                                <ul>
-                                    <li><a href="#cups">CUPS Include files</a> </li>
-                                    <li><a href="#xrender">XRender Include files</a></li>
-                                </ul>
-                            </li>
-                            <li>Linux only:
-                                <ul>
-                                    <li><a href="#alsa">ALSA files</a> </li>
-                                </ul>
-                            </li>
-                            <li>Windows only:
-                                <ul>
-                                    <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
-                                    <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
-                                </ul>
-                            </li>
-                        </ul>
+                        <li><a href="#dependencies">Build Dependencies</a>
+                            <ul>
+                                <li><a href="#bootjdk">Bootstrap JDK</a> </li>
+                                <li><a href="#importjdk">Optional Import JDK</a> </li>
+                                <li><a href="#ant">Ant</a> </li>
+                                <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
+                                <li><a href="#compilers">Compilers</a>
+                                    <ul>
+                                        <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li>
+                                        <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li>
+                                        <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li>
+                                        <li><a href="#gcc">Linux gcc/binutils</a> </li>
+                                        <li><a href="#studio">Sun Studio</a> </li>
+                                    </ul>
+                                </li>
+                                <li><a href="#zip">Zip and Unzip</a> </li>
+                                <li><a href="#freetype">FreeType2 Fonts</a> </li>
+                                <li>Linux and Solaris:
+                                    <ul>
+                                        <li><a href="#cups">CUPS Include files</a> </li>
+                                        <li><a href="#xrender">XRender Include files</a></li>
+                                    </ul>
+                                </li>
+                                <li>Linux only:
+                                    <ul>
+                                        <li><a href="#alsa">ALSA files</a> </li>
+                                    </ul>
+                                </li>
+                                <li>Windows only:
+                                    <ul>
+                                        <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
+                                        <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
+                                    </ul>
+                                </li>
+                            </ul>
+                        </li>
                     </ul>
                 </li>
                 <li><a href="#creating">Creating the Build</a> </li>
@@ -100,6 +105,76 @@
                 <li><a href="#troubleshooting">Troubleshooting</a></li>
             </ul>
         </blockquote>
+
+        <!-- ------------------------------------------------------ -->
+        <hr>
+        <h2><a name="hg">Use of Mercurial</a></h2>
+        <blockquote>
+            The OpenJDK sources are maintained with the revision control system
+            <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.
+            If you are new to Mercurial, please see the
+            <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a>
+            or refer to the <a href=""http://hgbook.red-bean.com/">Mercurial Book</a>.
+            The first few chapters of the book provide an excellent overview of
+            Mercurial, what it is and how it works.
+            <br>
+            For using Mercurial with the OpenJDK refer to the
+            <a href=""http://openjdk.java.net/guide/repositories.html#installConfig">
+               Developer Guide: Installing and Configuring Mercurial</a>
+            section for more information.
+            The Forest Extension is not part of the Mercurial install,
+            and is optional,
+            but can be obtained with the following commands:
+            <blockquote>
+                <tt>
+                    hg clone https://bitbucket.org/pmezard/hgforest-crew/overview/ <i>YourHgForest</i>
+                </tt>
+            </blockquote>
+            Once you have the file <tt>forest.py</tt>, you need to add these
+            lines to your <tt>${HOME}/.hgrc</tt> file:
+            <blockquote>
+                <tt>
+                    [extensions]
+                    <br>forest = <i>YourHgForest</i>/forest.py
+                </tt>
+            </blockquote>
+
+            <!-- ------------------------------------------------------ -->
+            <h3><a name="get_source">Getting the Source</a></h3>
+            <blockquote>
+                To get the entire set of OpenJDK Mercurial repositories
+                using the Forest Extension:
+                <blockquote>
+                    <tt>
+                        hg fclone http://openjdk.java.net/jdk7/jdk7 <i>YourOpenJDK</i>
+                    </tt>
+                </blockquote>
+                To get the entire set of OpenJDK Mercurial repositories
+                without using the Forest Extension:
+                <blockquote>
+                    <tt>
+                        hg clone http://openjdk.java.net/jdk7/jdk7 <i>YourOpenJDK</i>
+                        <br>cd <i>YourOpenJDK</i>
+                        <br>sh ./get_source.sh
+                    </tt>
+                </blockquote>
+                Once you have all the repositories, the
+                script <tt>make/scripts/hgforest.sh</tt>
+                can be used to repeat the same <tt>hg</tt>
+                command on every repository in the forest, e.g.
+                <blockquote>
+                    <tt>
+                        cd <i>YourOpenJDK</i>
+                        <br>sh ./make/scripts/hgforest.sh pull -u
+                    </tt>
+                </blockquote>
+                You may find this script <tt>make/scripts/hgforest.sh</tt> faster
+                than the <tt>hg</tt> forest commands provided by the
+                Forest Extension.
+            </blockquote>
+
+        </blockquote>
+
         <!-- ------------------------------------------------------ -->
         <hr>
         <h2><a name="MBE">Minimum Build Environments</a></h2>
@@ -116,8 +191,8 @@
             specific platforms, and in fact creating these specific platforms
             may be difficult due to the age of some of this software.
             <p>
-            The minimum OS and C/C++ compiler versions needed for building the
-            OpenJDK:
+                The minimum OS and C/C++ compiler versions needed for building the
+                OpenJDK:
             <p>
             <table border="1">
                 <thead>
@@ -146,7 +221,7 @@
                         <td>Solaris 10u2 + patches 
                             <br>
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
+                                SunSolve</a> for patch downloads.
                         </td>
                         <td>Sun Studio 12 Update 1 + patches</td>
                         <td>JDK 6u14 FCS </td>
@@ -156,7 +231,7 @@
                         <td>Solaris 10u2 + patches
                             <br>
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
+                                SunSolve</a> for patch downloads.
                         </td>
                         <td>Sun Studio 12 Update 1 + patches</td>
                         <td>JDK 6u14 FCS </td>
@@ -166,7 +241,7 @@
                         <td>Solaris 10u2 + patches
                             <br>
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
+                                SunSolve</a> for patch downloads.
                         </td>
                         <td>Sun Studio 12 Update 1 + patches</td>
                         <td>JDK 6u14 FCS </td>
@@ -176,7 +251,7 @@
                         <td>Solaris 10u2 + patches
                             <br>
                             See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
-                            SunSolve</a> for patch downloads.
+                                SunSolve</a> for patch downloads.
                         </td>
                         <td>Sun Studio 12 Update 1 + patches</td>
                         <td>JDK 6u14 FCS </td>
@@ -195,14 +270,14 @@
                     </tr>
                 </tbody>
             </table>
-	    <p>
+            <p>
 	    These same sources do indeed build on many more systems than the
 	    above older generation systems, again the above is just a minimum.
-	    <p>
+            <p>
 	    Compilation problems with newer or different C/C++ compilers is a
 	    common problem.
 	    Similarly, compilation problems related to changes to the
-	    <tt>/usr/include</tt> or system header files is also a
+                <tt>/usr/include</tt> or system header files is also a
 	    common problem with newer or unreleased OS versions.
 	    Please report these types of problems as bugs so that they
 	    can be dealt with accordingly.
@@ -217,57 +292,57 @@
         <!-- ------------------------------------------------------ -->
         <h3><a name="fedora">Fedora</a></h3>
         <blockquote>
-	  <h4>Fedora 9</h4>
-	  <p>
-	    <blockquote>
-              After installing <a href="http://fedoraproject.org">Fedora</a> 9 
+            <h4>Fedora 9</h4>
+            <p>
+            <blockquote>
+                After installing <a href="http://fedoraproject.org">Fedora</a> 9
 	      you need to install several build dependencies. The simplest
 	      way to do it is to execute the following commands as user 
-	      <tt>root</tt>:
-	      <p/>
-	      <code>yum-builddep java-openjdk</code>
-	      <p/>
-	      <code>yum install gcc gcc-c++</code>
-	      <p/>
+                <tt>root</tt>:
+                <p/>
+                <code>yum-builddep java-openjdk</code>
+                <p/>
+                <code>yum install gcc gcc-c++</code>
+                <p/>
 	      In addition, it's necessary to set a few environment variables for the build:
 
-	      <p/>
-	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
             </blockquote>
-	  <h4>Fedora 10</h4>
-	  <p>
-	    <blockquote>
-              After installing <a href="http://fedoraproject.org">Fedora</a> 10 
+            <h4>Fedora 10</h4>
+            <p>
+            <blockquote>
+                After installing <a href="http://fedoraproject.org">Fedora</a> 10
 	      you need to install several build dependencies. The simplest
 	      way to do it is to execute the following commands as user 
-	      <tt>root</tt>:
-	      <p/>
-	      <code>yum-builddep java-1.6.0-openjdk</code>
-	      <p/>
-	      <code>yum install gcc gcc-c++</code>
-	      <p/>
+                <tt>root</tt>:
+                <p/>
+                <code>yum-builddep java-1.6.0-openjdk</code>
+                <p/>
+                <code>yum install gcc gcc-c++</code>
+                <p/>
 	      In addition, it's necessary to set a few environment variables for the build:
 
-	      <p/>
-	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
             </blockquote>
-	  <h4>Fedora 11</h4>
-	  <p>
-	    <blockquote>
-              After installing <a href="http://fedoraproject.org">Fedora</a> 11 
+            <h4>Fedora 11</h4>
+            <p>
+            <blockquote>
+                After installing <a href="http://fedoraproject.org">Fedora</a> 11
 	      you need to install several build dependencies. The simplest
 	      way to do it is to execute the following commands as user 
-	      <tt>root</tt>:
-	      <p/>
-	      <code>yum-builddep java-1.6.0-openjdk</code>
-	      <p/>
-	      <code>yum install gcc gcc-c++</code>
-	      <p/>
+                <tt>root</tt>:
+                <p/>
+                <code>yum-builddep java-1.6.0-openjdk</code>
+                <p/>
+                <code>yum install gcc gcc-c++</code>
+                <p/>
 	      In addition, it's necessary to set a few environment variables for the build:
 
-	      <p/>
-	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
-             </blockquote>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
+            </blockquote>
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h3><a name="centos">CentOS 5.2</a></h3>
@@ -285,7 +360,7 @@
                 </ul>
             </blockquote>
             <p>
-            Plus the following packages:
+                Plus the following packages:
             <blockquote>
                 <ul>
                     <li>cups devel: Cups Development Package</li>
@@ -295,188 +370,188 @@
                 </ul>
             </blockquote>
             <p>
-            The freetype 2.3 packages don't seem to be available,
-            but the freetype 2.3 sources can be downloaded, built,
-            and installed easily enough from
-            <a href="http://downloads.sourceforge.net/freetype">
-            the freetype site</a>.
-            Build and install with something like:
+                The freetype 2.3 packages don't seem to be available,
+                but the freetype 2.3 sources can be downloaded, built,
+                and installed easily enough from
+                <a href="http://downloads.sourceforge.net/freetype">
+                    the freetype site</a>.
+                Build and install with something like:
             <blockquote>
                 <tt>./configure && make && sudo -u root make install</tt>
             </blockquote>
             <p>
-            Mercurial packages could not be found easily, but a Google
-            search should find ones, and they usually include Python if
-            it's needed.
+                Mercurial packages could not be found easily, but a Google
+                search should find ones, and they usually include Python if
+                it's needed.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h3><a name="debian">Debian</a></h3>
         <blockquote>
             <h4>Debian 5.0 (Lenny)</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://debian.org">Debian</a> 5 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands as user <tt>root</tt>:
-		<p/>
-		<code>aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>aptitude install openjdk-6-jdk libmotif-dev</code>
-		<p/>
+                <p/>
+                <code>aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>aptitude install openjdk-6-jdk libmotif-dev</code>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-	      </blockquote>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+            </blockquote>
         </blockquote>
         <!-- ====================================================== -->
-	<h3><a name="ubuntu">Ubuntu</a></h3>
+        <h3><a name="ubuntu">Ubuntu</a></h3>
         <blockquote>
             <h4>Ubuntu 8.04</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04 
 		you need to install several build dependencies. 
-		<p/>
+                <p/>
 		First, you need to enable the universe repository in the 
 		Software Sources application and reload the repository 
 		information. The Software Sources application is available 
 		under the System/Administration menu. 
-		<p/>
+                <p/>
 		The simplest way to install the build dependencies is to 
 		execute the following commands:
-		<p/>
-		<code>sudo aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>sudo aptitude install openjdk-6-jdk</code>
-		<p/>
+                <p/>
+                <code>sudo aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>sudo aptitude install openjdk-6-jdk</code>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-              </blockquote>
-           <h4>Ubuntu 8.10</h4>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+            </blockquote>
+            <h4>Ubuntu 8.10</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10 
 		you need to install several build dependencies. The simplest
 		way to do it is to execute the following commands:
-		<p/>
-		<code>sudo aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>sudo aptitude install openjdk-6-jdk</code>
-		<p/>
+                <p/>
+                <code>sudo aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>sudo aptitude install openjdk-6-jdk</code>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-             </blockquote>
-           <h4>Ubuntu 9.04</h4>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+            </blockquote>
+            <h4>Ubuntu 9.04</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04 
 		you need to install several build dependencies. The simplest
 		way to do it is to execute the following commands:
-		<p/>
-		<code>sudo aptitude build-dep openjdk-6</code>
-		<p/>
-		<code>sudo aptitude install openjdk-6-jdk</code>
-		<p/>
+                <p/>
+                <code>sudo aptitude build-dep openjdk-6</code>
+                <p/>
+                <code>sudo aptitude install openjdk-6-jdk</code>
+                <p/>
 		In addition, it's necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
-             </blockquote>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
+            </blockquote>
         </blockquote>
         <!-- ====================================================== -->
         <h3><a name="opensuse">OpenSUSE</a></h3>
         <blockquote>
             <h4>OpenSUSE 11.1</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands:
-		<p/>
-		<code>sudo zypper source-install -d java-1_6_0-openjdk</code>
-		<p/>
-		<code>sudo zypper install make</code>
-		<p/>
+                <p/>
+                <code>sudo zypper source-install -d java-1_6_0-openjdk</code>
+                <p/>
+                <code>sudo zypper install make</code>
+                <p/>
 		In addition, it is necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
-		<p/>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
+                <p/>
 		Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
-		<p/>
-		<code>export -n JAVA_HOME</code>
-	      </blockquote>
-	</blockquote>
+                <p/>
+                <code>export -n JAVA_HOME</code>
+            </blockquote>
+        </blockquote>
         <!-- ====================================================== -->
         <h3><a name="mandriva">Mandriva</a></h3>
         <blockquote>
             <h4>Mandriva Linux One 2009 Spring</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands as user <tt>root</tt>:
-		<p/>
-		<code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code>
+                <p/>
+                <code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code>
                 <p/>
 		In addition, it is necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
-	      </blockquote>
+                <p/>
+                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
+            </blockquote>
         </blockquote>
         <!-- ====================================================== -->
         <h3><a name="opensolaris">OpenSolaris</a></h3>
         <blockquote>
             <h4>OpenSolaris 2009.06</h4>
             <p>
-	      <blockquote>
+            <blockquote>
 		After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 
 		you need to install several build dependencies. 
 		The simplest way to install the build dependencies is to 
 		execute the following commands:
-		<p/>
-		<code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
+                <p/>
+                <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
                 <p/>
 		In addition, it is necessary to set a few environment variables for the build:
-		<p/>
-		<code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
-		<p/>
+                <p/>
+                <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
+                <p/>
 		Finally, you need to make sure that the build process can find the Sun Studio compilers:
-		<p/>
-		<code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
-	      </blockquote>
+                <p/>
+                <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
+            </blockquote>
         </blockquote>
         <!-- ------------------------------------------------------ -->  
         <hr>
         <h2><a name="directories">Source Directory Structure</a></h2>
         <blockquote>
             <p>
-            The source code for the OpenJDK is delivered in a set of
-            directories:
-            <tt>hotspot</tt>, 
-            <tt>langtools</tt>, 
-            <tt>corba</tt>, 
-            <tt>jaxws</tt>, 
-            <tt>jaxp</tt>, 
-            and
-            <tt>jdk</tt>.
-            The <tt>hotspot</tt> directory contains the source code and make
-            files for building the OpenJDK Hotspot Virtual Machine. 
-            The <tt>langtools</tt> directory contains the source code and make
-            files for building the OpenJDK javac and language tools.
-            The <tt>corba</tt> directory contains the source code and make
-            files for building the OpenJDK Corba files.
-            The <tt>jaxws</tt> directory contains the source code and make
-            files for building the OpenJDK JAXWS files.
-            The <tt>jaxp</tt> directory contains the source code and make
-            files for building the OpenJDK JAXP files.
-            The <tt>jdk</tt> directory contains the source code and make files for
-            building the OpenJDK runtime libraries and misc files.
-            The top level <tt>Makefile</tt>
-            is used to build the entire OpenJDK.
+                The source code for the OpenJDK is delivered in a set of
+                directories:
+                <tt>hotspot</tt>,
+                <tt>langtools</tt>,
+                <tt>corba</tt>,
+                <tt>jaxws</tt>,
+                <tt>jaxp</tt>,
+                and
+                <tt>jdk</tt>.
+                The <tt>hotspot</tt> directory contains the source code and make
+                files for building the OpenJDK Hotspot Virtual Machine.
+                The <tt>langtools</tt> directory contains the source code and make
+                files for building the OpenJDK javac and language tools.
+                The <tt>corba</tt> directory contains the source code and make
+                files for building the OpenJDK Corba files.
+                The <tt>jaxws</tt> directory contains the source code and make
+                files for building the OpenJDK JAXWS files.
+                The <tt>jaxp</tt> directory contains the source code and make
+                files for building the OpenJDK JAXP files.
+                The <tt>jdk</tt> directory contains the source code and make files for
+                building the OpenJDK runtime libraries and misc files.
+                The top level <tt>Makefile</tt>
+                is used to build the entire OpenJDK.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
@@ -495,10 +570,10 @@
             <tt>ALT_*</tt> variables (alternates)
             can be used to help the makefiles locate components.
             <p>
-            Refer to the bash/sh/ksh setup file
-            <tt>jdk/make/jdk_generic_profile.sh</tt>
-            if you need help in setting up your environment variables.
-            A build could be as simple as:
+                Refer to the bash/sh/ksh setup file
+                <tt>jdk/make/jdk_generic_profile.sh</tt>
+                if you need help in setting up your environment variables.
+                A build could be as simple as:
             <blockquote>
                 <pre><tt>
                 bash
@@ -507,12 +582,12 @@
                 </tt></pre>
             </blockquote>
             <p>
-            Of course ksh or sh would work too.
-            But some customization will probably be necessary.
-            The <tt>sanity</tt> rule will make some basic checks on build
-            dependencies and generate appropriate warning messages
-            regarding missing, out of date, or newer than expected components
-            found on your system.
+                Of course ksh or sh would work too.
+                But some customization will probably be necessary.
+                The <tt>sanity</tt> rule will make some basic checks on build
+                dependencies and generate appropriate warning messages
+                regarding missing, out of date, or newer than expected components
+                found on your system.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
@@ -559,14 +634,14 @@
                     version that has this problem fixed.
                     The older 3.80 version of make.exe can be downloaded with this
                     <a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2" target="_blank">
-                    link</a>.
+                        link</a>.
                     Use of this older 3.80 make.exe may require that you install the
                     libintl2.dll library or libintl2 cygwin package which is
                     no longer installed by default by the cygwin installer.
                     <br>
                     Also see the
                     <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
-                    mozilla developer center</a>
+                        mozilla developer center</a>
                     on this topic.
                     <br>
                     It's hoped that when make 3.82 starts shipping in a future cygwin
@@ -574,19 +649,19 @@
                     In addition to the above 3.80 make.exe you can download 
                     this
                     <a href="http://www.cmake.org/files/cygwin/make.exe">
-                    www.cmake.org make.exe</a> which will not have a libintl2.dll
+                        www.cmake.org make.exe</a> which will not have a libintl2.dll
                     dependency.
                 </li>
             </ul>
             <p>
-            Information on GNU make, and access to ftp download sites, are
-            available on the
-            <a href="http://www.gnu.org/software/make/make.html" target="_blank">
-                GNU make web site
-            </a>.
-            The latest source to GNU make is available at
-            <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
-            ftp.gnu.org/pub/gnu/make/</a>.
+                Information on GNU make, and access to ftp download sites, are
+                available on the
+                <a href="http://www.gnu.org/software/make/make.html" target="_blank">
+                    GNU make web site
+                </a>.
+                The latest source to GNU make is available at
+                <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
+                    ftp.gnu.org/pub/gnu/make/</a>.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
@@ -597,27 +672,27 @@
             is a Pentium class processor or better, at least 256 MB of RAM, and
             approximately 1.5 GB of free disk space.
             <p> 
-            <strong>X64 only:</strong>
-            The minimum recommended hardware for building the Linux
-            version is an AMD Opteron class processor, at least 512 MB of RAM, and
-            approximately 4 GB of free disk space.
+                <strong>X64 only:</strong>
+                The minimum recommended hardware for building the Linux
+                version is an AMD Opteron class processor, at least 512 MB of RAM, and
+                approximately 4 GB of free disk space.
             <p> 
-            The build will use the tools contained in 
-            <tt>/bin</tt> and 
-            <tt>/usr/bin</tt>
-            of a standard installation of the Linux operating environment. 
-            You should ensure that these directories are in your 
-            <tt>PATH</tt>.
+                The build will use the tools contained in
+                <tt>/bin</tt> and
+                <tt>/usr/bin</tt>
+                of a standard installation of the Linux operating environment.
+                You should ensure that these directories are in your
+                <tt>PATH</tt>.
             <p>
-            Note that some Linux systems have a habit of pre-populating
-            your environment variables for you, for example <tt>JAVA_HOME</tt>
-            might get pre-defined for you to refer to the JDK installed on
-            your Linux system. 
-            You will need to unset <tt>JAVA_HOME</tt>.
-            It's a good idea to run <tt>env</tt> and verify the
-            environment variables you are getting from the default system
-            settings make sense for building the 
-            OpenJDK.
+                Note that some Linux systems have a habit of pre-populating
+                your environment variables for you, for example <tt>JAVA_HOME</tt>
+                might get pre-defined for you to refer to the JDK installed on
+                your Linux system.
+                You will need to unset <tt>JAVA_HOME</tt>.
+                It's a good idea to run <tt>env</tt> and verify the
+                environment variables you are getting from the default system
+                settings make sense for building the
+                OpenJDK.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="linux_checklist">Basic Linux Check List</a></h4>
@@ -629,17 +704,12 @@
                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
                 </li>
                 <li>
-                    Install the
-                    <a href="#binaryplugs">Binary Plugs</a>, set
-                    <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
-                </li>
-                <li>
                     <a href="#importjdk">Optional Import JDK</a>, set
                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
                 </li>
                 <li>
                     Install or upgrade the <a href="#freetype">FreeType development
-                    package</a>.
+                        package</a>.
                 </li>
                 <li>
                     Install
@@ -660,23 +730,23 @@
             Approximately 1.4 GB of free disk
             space is needed for a 32-bit build.
             <p>
-            If you are building the 64-bit version, you should
-            run the command "isainfo -v" to verify that you have a
-            64-bit installation, it should say <tt>sparcv9</tt> or
-            <tt>amd64</tt>.
-            An additional 7 GB of free disk space is needed
-            for a 64-bit build.
+                If you are building the 64-bit version, you should
+                run the command "isainfo -v" to verify that you have a
+                64-bit installation, it should say <tt>sparcv9</tt> or
+                <tt>amd64</tt>.
+                An additional 7 GB of free disk space is needed
+                for a 64-bit build.
             <p> 
-            The build uses the tools contained in <tt>/usr/ccs/bin</tt>
-            and <tt>/usr/bin</tt> of a standard developer or full installation of
-            the Solaris operating environment.
+                The build uses the tools contained in <tt>/usr/ccs/bin</tt>
+                and <tt>/usr/bin</tt> of a standard developer or full installation of
+                the Solaris operating environment.
             <p> 
-            Solaris patches specific to the JDK can be downloaded from the 
-            <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
-            SunSolve JDK Solaris patches download page</a>.
-            You should ensure that the latest patch cluster for
-            your version of the Solaris operating environment has also
-            been installed.
+                Solaris patches specific to the JDK can be downloaded from the
+                <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
+                    SunSolve JDK Solaris patches download page</a>.
+                You should ensure that the latest patch cluster for
+                your version of the Solaris operating environment has also
+                been installed.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
@@ -688,11 +758,6 @@
                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
                 </li>
                 <li>
-                    Install the
-                    <a href="#binaryplugs">Binary Plugs</a>, set
-                    <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
-                </li>
-                <li>
                     <a href="#importjdk">Optional Import JDK</a>, set
                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
                 </li>
@@ -731,10 +796,10 @@
                 because FAT32 doesn't support case-sensitivity in file names.
             </strong>
             <p> 
-            <strong>X64 only:</strong>
-            The minimum recommended hardware for building
-            the Windows X64 version is an AMD Opteron class processor, at least 1
-            GB of RAM, and approximately 10 GB of free disk space.
+                <strong>X64 only:</strong>
+                The minimum recommended hardware for building
+                the Windows X64 version is an AMD Opteron class processor, at least 1
+                GB of RAM, and approximately 10 GB of free disk space.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="paths">Windows Paths</a></h4>
@@ -753,18 +818,18 @@
             (called 'mixed'), e.g.
             <tt>cygpath -s -m "<i>path</i>"</tt>.
             <p>
-            The makefiles will try to translate any pathnames supplied
-            to it into the <tt>C:/</tt> style automatically.
+                The makefiles will try to translate any pathnames supplied
+                to it into the <tt>C:/</tt> style automatically.
             <p>
-            Note that use of CYGWIN creates a unique problem with regards to
-            setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
-            the <tt>PATH</tt> variable contains directories
-            separated with the ";" character (Solaris and Linux uses ":").
-            With CYGWIN, it uses ":", but that means that paths like "C:/path"
-            cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
-            instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
-            which CYGWIN understands, but only CYGWIN understands.
-            So be careful with paths on Windows.
+                Note that use of CYGWIN creates a unique problem with regards to
+                setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
+                the <tt>PATH</tt> variable contains directories
+                separated with the ";" character (Solaris and Linux uses ":").
+                With CYGWIN, it uses ":", but that means that paths like "C:/path"
+                cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
+                instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
+                which CYGWIN understands, but only CYGWIN understands.
+                So be careful with paths on Windows.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
@@ -780,11 +845,6 @@
                     <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
                 </li>
                 <li>
-                    Install the
-                    <a href="#binaryplugs">Binary Plugs</a>, set
-                    <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>..
-                </li>
-                <li>
                     <a href="#importjdk">Optional Import JDK</a>, set
                     <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
                 </li>
@@ -828,7 +888,7 @@
                 JDK 6, this is often called a bootstrap JDK.
                 The JDK 6 binaries can be downloaded from Sun's 
                 <a href="http://java.sun.com/javase/downloads/index.jsp"
-		target="_blank">JDK 6 download site</a>.
+                   target="_blank">JDK 6 download site</a>.
                 For build performance reasons
                 is very important that this bootstrap JDK be made available on the
                 local disk of the machine doing the build.
@@ -841,44 +901,12 @@
                 in the <tt>PATH</tt> environment variable, although it's
                 not required.
                 <p>
-                <strong>Solaris:</strong>
-                Some pre-installed JDK images may be available to you in the
-                directory <tt>/usr/jdk/instances</tt>.
-                If you don't set
-                <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
-                the makefiles will look in that location for a JDK it can use.
-            </blockquote>
-            <!-- ------------------------------------------------------ -->
-            <h4><a name="binaryplugs">Binary Plugs</a></h4>
-            <blockquote>
-                Not all of the source code that makes up the JDK is available
-                under an open-source license.
-                This is a temporary situation and these binary plugs will be
-                replaced with fully open source replacements as soon as possible.
-                So currently, in order to build a complete OpenJDK image,
-                you must first download and install the appropriate
-                binary plug bundles for the OpenJDK, go to the
-                <a href="http://openjdk.java.net" target="_blank">OpenJDK</a> site and select
-                the 
-                "<b>Bundles(7)</b>"
-                link and download the binaryplugs for
-                your particular platform.
-                The file downloaded is a jar file that must be extracted by running
-                the jar file with:
-                <blockquote>
-                    <pre>
-            <tt><b>java -jar jdk-7-ea-plug-b<i>nn</i>-<i>os</i>-<i>arch</i>-<i>dd</i>_<i>month</i>_<i>year</i>.jar</b></tt>
-                    </pre>
-                </blockquote>
-                A prompt will be issued for acceptance of these binary plug files.
-                During the OpenJDK build process these "binary plugs"
-                for the encumbered components will be copied into your
-                resulting OpenJDK binary build image.
-                These binary plug files are only for the purpose of
-                building an OpenJDK binary.
-                Make sure you set
-                <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
-                to the root of this installation.
+                    <strong>Solaris:</strong>
+                    Some pre-installed JDK images may be available to you in the
+                    directory <tt>/usr/jdk/instances</tt>.
+                    If you don't set
+                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
+                    the makefiles will look in that location for a JDK it can use.
             </blockquote>
             <!-- ------------------------------------------------------ -->
             <h4><a name="importjdk">Optional Import JDK</a></h4>
@@ -896,7 +924,7 @@
                 All OpenJDK builds require access to least Ant 1.6.5.
                 The Ant tool is available from the 
                 <a href="http://ant.apache.org" target="_blank">
-                Ant download site</a>.
+                    Ant download site</a>.
                 You should always make sure <tt>ant</tt> is in your PATH, and
                 on Windows you may also need to set 
                 <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
@@ -908,7 +936,7 @@
             <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
             <blockquote>
                 See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
-                http://en.wikipedia.org/wiki/Certificate_Authority</a>
+                    http://en.wikipedia.org/wiki/Certificate_Authority</a>
                 for a better understanding of the Certificate Authority (CA).
                 A certificates file named "cacerts"
                 represents a system-wide keystore with CA certificates. 
@@ -942,121 +970,121 @@
                 <blockquote>
                     At a minimum, the
                     <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank">
-                    Sun Studio 12 Update 1 Compilers</a>
+                        Sun Studio 12 Update 1 Compilers</a>
                     (containing version 5.10 of the C and C++ compilers) is required,
 		    including specific patches.
-		    <p>
+                    <p>
 		    The Solaris SPARC patch list is:
-		    <ul>
-		    <li>
-                    118683-05: SunOS 5.10: Patch for profiling libraries and assembler
-                    </li>
-                    <li>
-                    119963-21: SunOS 5.10: Shared library patch for C++
-                    </li>
-                    <li>
-                    120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch
-                    </li>
-                    <li>
-                    128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler
-                    </li>
-                    <li>
-                    141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
-                    </li>
-                    <li>
-                    141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler
-                    </li>
-                    <li>
-                    142371-01: Sun Studio 12.1 Update 1: Patch for dbx
-                    </li>
-                    <li>
-                    143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling
-                    </li>
-                    <li>
-                    143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
-                    </li>
-                    <li>
-                    142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools
-                    </li>
+                    <ul>
+                        <li>
+                            118683-05: SunOS 5.10: Patch for profiling libraries and assembler
+                        </li>
+                        <li>
+                            119963-21: SunOS 5.10: Shared library patch for C++
+                        </li>
+                        <li>
+                            120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch
+                        </li>
+                        <li>
+                            128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler
+                        </li>
+                        <li>
+                            141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
+                        </li>
+                        <li>
+                            141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler
+                        </li>
+                        <li>
+                            142371-01: Sun Studio 12.1 Update 1: Patch for dbx
+                        </li>
+                        <li>
+                            143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling
+                        </li>
+                        <li>
+                            143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
+                        </li>
+                        <li>
+                            142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools
+                        </li>
                     </ul>
                     <p>
-                    The Solaris X86 patch list is:
+                        The Solaris X86 patch list is:
                     <ul>
-                    <li>
-                    119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler
-                    </li>
-                    <li>
-                    119964-21: SunOS 5.10_x86: Shared library patch for C++_x86
-                    </li>
-                    <li>
-                    120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch
-                    </li>
-                    <li>
-                    141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend
-                    </li>
-                    <li>
-                    128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler
-                    </li>
-                    <li>
-                    142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler
-                    </li>
-                    <li>
-                    142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools
-                    </li>
+                        <li>
+                            119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler
+                        </li>
+                        <li>
+                            119964-21: SunOS 5.10_x86: Shared library patch for C++_x86
+                        </li>
+                        <li>
+                            120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch
+                        </li>
+                        <li>
+                            141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend
+                        </li>
+                        <li>
+                            128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler
+                        </li>
+                        <li>
+                            142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler
+                        </li>
+                        <li>
+                            142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools
+                        </li>
                     </ul>
                     <p> 
-                    Set 
-                    <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
-                    to point to the location of
-                    the compiler binaries, and place this location in the <tt>PATH</tt>.
+                        Set
+                        <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
+                        to point to the location of
+                        the compiler binaries, and place this location in the <tt>PATH</tt>.
                     <p>
-                    The Oracle Solaris Studio Express compilers at:
-                    <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
-                    Oracle Solaris Studio Express Download site</a>
-                    are also an option, although these compilers have not
-                    been extensively used yet.
+                        The Oracle Solaris Studio Express compilers at:
+                        <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
+                            Oracle Solaris Studio Express Download site</a>
+                        are also an option, although these compilers have not
+                        been extensively used yet.
                 </blockquote>
                 <strong><a name="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong>
                 <blockquote>
-<p>
-<b>BEGIN WARNING</b>: At this time (Spring/Summer 2010) JDK 7 is starting a transition to
-use the newest VS2010 Microsoft compilers. These build instructions are updated
-to show where we are going. We have a QA process to go through before
-official builds actually use VS2010. So for now, official builds are
-still using VS2003. No other compilers are known to build the entire JDK,
-including non-open portions.
-So for now you should be able to build with either VS2003 or VS2010.
-We do not guarantee that VS2008 will work, although there is sufficient
-makefile support to make at least basic JDK builds plausible.
-Visual Studio 2010 Express compilers are now able to build all the
-open source repositories, but this is 32 bit only. To build 64 bit
-Windows binaries use the the 7.1 Windows SDK.<b>END WARNING.</b>
-<p>
-                    The 32-bit OpenJDK Windows build
-                    requires 
-                    Microsoft Visual Studio C++ 2010 (VS2010) Professional
-                    Edition or Express compiler.
-                    The compiler and other tools are expected to reside
-                    in the location defined by the variable 
-                    <tt>VS100COMNTOOLS</tt> which
-                    is set by the Microsoft Visual Studio installer.
+                    <p>
+                        <b>BEGIN WARNING</b>: At this time (Spring/Summer 2010) JDK 7 is starting a transition to
+                        use the newest VS2010 Microsoft compilers. These build instructions are updated
+                        to show where we are going. We have a QA process to go through before
+                        official builds actually use VS2010. So for now, official builds are
+                        still using VS2003. No other compilers are known to build the entire JDK,
+                        including non-open portions.
+                        So for now you should be able to build with either VS2003 or VS2010.
+                        We do not guarantee that VS2008 will work, although there is sufficient
+                        makefile support to make at least basic JDK builds plausible.
+                        Visual Studio 2010 Express compilers are now able to build all the
+                        open source repositories, but this is 32 bit only. To build 64 bit
+                        Windows binaries use the the 7.1 Windows SDK.<b>END WARNING.</b>
+                    <p>
+                        The 32-bit OpenJDK Windows build
+                        requires
+                        Microsoft Visual Studio C++ 2010 (VS2010) Professional
+                        Edition or Express compiler.
+                        The compiler and other tools are expected to reside
+                        in the location defined by the variable
+                        <tt>VS100COMNTOOLS</tt> which
+                        is set by the Microsoft Visual Studio installer.
                     <p> 
-                    Once the compiler is installed, 
-                    it is recommended that you run <tt>VCVARS32.BAT</tt> 
-                    to set the compiler environment variables
-                    <tt>INCLUDE</tt>,
-                    <tt>LIB</tt>, and
-                    <tt>PATH</tt> 
-                    prior to building the 
-                    OpenJDK.
-                    The above environment variables <b>MUST</b> be set.
-                    This compiler also contains the Windows SDK v 7.0a,
-                    which is an update to the Windows 7 SDK.
+                        Once the compiler is installed,
+                        it is recommended that you run <tt>VCVARS32.BAT</tt>
+                        to set the compiler environment variables
+                        <tt>INCLUDE</tt>,
+                        <tt>LIB</tt>, and
+                        <tt>PATH</tt>
+                        prior to building the
+                        OpenJDK.
+                        The above environment variables <b>MUST</b> be set.
+                        This compiler also contains the Windows SDK v 7.0a,
+                        which is an update to the Windows 7 SDK.
                     <p>
-                    <b>WARNING:</b> Make sure you check out the
-                    <a href="#cygwin">CYGWIN link.exe WARNING</a>.
-                    The path <tt>/usr/bin</tt> must be after the path to the
-                    Visual Studio product.
+                        <b>WARNING:</b> Make sure you check out the
+                        <a href="#cygwin">CYGWIN link.exe WARNING</a>.
+                        The path <tt>/usr/bin</tt> must be after the path to the
+                        Visual Studio product.
                 </blockquote>
                 <strong><a name="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong>
                 <blockquote>
@@ -1069,22 +1097,22 @@
                     you have VS2010 Professional.
                 </blockquote>
                 <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong>
-                   For a free alternative for 64 bit builds, use the 7.1 SDK.
-                   Microsoft say that to set up your paths for this run
-<pre>
+                For a free alternative for 64 bit builds, use the 7.1 SDK.
+                Microsoft say that to set up your paths for this run
+                <pre>
     c:\Program Files\Microsoft SDKs\Windows\v7.1\bin\setenv.cmd /x64.
-</pre>
-                   What was tested is just directly setting up LIB, INCLUDE,
-                   PATH and based on the installation directories using the
-                   DOS short name appropriate for the system, (you will
-                   need to set them for yours, not just blindly copy this) eg :
-<pre>
+                </pre>
+                What was tested is just directly setting up LIB, INCLUDE,
+                PATH and based on the installation directories using the
+                DOS short name appropriate for the system, (you will
+                need to set them for yours, not just blindly copy this) eg :
+                <pre>
     set VSINSTALLDIR=c:\PROGRA~2\MICROS~1.0
     set WindowsSdkDir=c:\PROGRA~1\MICROS~1\Windows\v7.1
     set PATH=%VSINSTALLDIR%\vc\bin\amd64;%VSINSTALLDIR%\Common7\IDE;%WindowsSdkDir%\bin;%PATH%
     set INCLUDE=%VSINSTALLDIR%\vc\include;%WindowsSdkDir%\include
     set LIB=%VSINSTALLDIR%\vc\lib\amd64;%WindowsSdkDir%\lib\x64
-</pre>
+                </pre>
             </blockquote>
             <!-- ------------------------------------------------------ --> 
             <h4><a name="zip">Zip and Unzip</a></h4>
@@ -1110,41 +1138,41 @@
                 Companion CD/DVD, these often will be installed into 
                 <tt>/opt/sfw/cups</tt>.
                 <p>
-                <strong>Linux:</strong>
-                CUPS header files are required for building the 
-                OpenJDK on Linux.
-                The Linux header files are usually available from a "cups"
-                development package, it's recommended that you try and use
-                the package provided by the particular version of Linux that
-                you are using.
+                    <strong>Linux:</strong>
+                    CUPS header files are required for building the
+                    OpenJDK on Linux.
+                    The Linux header files are usually available from a "cups"
+                    development package, it's recommended that you try and use
+                    the package provided by the particular version of Linux that
+                    you are using.
                 <p>
-                The CUPS header files can always be downloaded from 
-                <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
-                The variable 
-                <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
-                can be used to override the default location of the
-                CUPS Header files.
+                    The CUPS header files can always be downloaded from
+                    <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
+                    The variable
+                    <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
+                    can be used to override the default location of the
+                    CUPS Header files.
             </blockquote>
             <!-- ------------------------------------------------------ -->
             <h4><a name="xrender">XRender Extension Headers (Solaris &amp; Linux)</a></h4>
             <blockquote>
                 <p>
-                <strong>Solaris:</strong>
-                XRender header files are required for building the 
-                OpenJDK on Solaris.
-                The XRender header file is included with the other X11 header files
-                in the package <strong>SFWxwinc</strong> on new enough versions of
-                Solaris and will be installed in
-	        <tt>/usr/X11/include/X11/extensions/Xrender.h</tt>
+                    <strong>Solaris:</strong>
+                    XRender header files are required for building the
+                    OpenJDK on Solaris.
+                    The XRender header file is included with the other X11 header files
+                    in the package <strong>SFWxwinc</strong> on new enough versions of
+                    Solaris and will be installed in
+                    <tt>/usr/X11/include/X11/extensions/Xrender.h</tt>
                 </p><p>
-                <strong>Linux:</strong>
-                XRender header files are required for building the 
-                OpenJDK on Linux.
-                The Linux header files are usually available from a "Xrender"
-                development package, it's recommended that you try and use
-                the package provided by the particular distribution of Linux that
-                you are using.
-	        </p>
+                    <strong>Linux:</strong>
+                    XRender header files are required for building the
+                    OpenJDK on Linux.
+                    The Linux header files are usually available from a "Xrender"
+                    development package, it's recommended that you try and use
+                    the package provided by the particular distribution of Linux that
+                    you are using.
+                </p>
             </blockquote>
             <!-- ------------------------------------------------------ -->
             <h4><a name="freetype">FreeType 2</a></h4>
@@ -1155,31 +1183,31 @@
                 Note that you need development version of package that 
                 includes both FreeType library and header files.
                 <p>
-                You can always download latest FreeType version from the
-                <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
+                    You can always download latest FreeType version from the
+                    <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
                 <p>
-                Makefiles will try to pick FreeType from /usr/lib and /usr/include.
-                In case it is installed elsewhere you will need to set environment
-                variables 
-                <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
-                and 
-                <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
-                to refer to place where library and header files are installed.
+                    Makefiles will try to pick FreeType from /usr/lib and /usr/include.
+                    In case it is installed elsewhere you will need to set environment
+                    variables
+                    <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
+                    and
+                    <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
+                    to refer to place where library and header files are installed.
                 <p>
-                Building the freetype 2 libraries from scratch is also possible,
-                however on Windows refer to the
-                <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
-                Windows FreeType DLL build instructions</a>.
+                    Building the freetype 2 libraries from scratch is also possible,
+                    however on Windows refer to the
+                    <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
+                        Windows FreeType DLL build instructions</a>.
                 <p>
-                Note that by default FreeType is built with byte code hinting
-                support disabled due to licensing restrictions.
-                In this case, text appearance and metrics are expected to
-                differ from Sun's official JDK build.
-                See
-                <a href="http://freetype.sourceforge.net/freetype2/index.html">
-                    the SourceForge FreeType2 Home Page
-                </a>
-                for more information.
+                    Note that by default FreeType is built with byte code hinting
+                    support disabled due to licensing restrictions.
+                    In this case, text appearance and metrics are expected to
+                    differ from Sun's official JDK build.
+                    See
+                    <a href="http://freetype.sourceforge.net/freetype2/index.html">
+                        the SourceForge FreeType2 Home Page
+                    </a>
+                    for more information.
             </blockquote>    
             <!-- ------------------------------------------------------ -->
             <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
@@ -1195,25 +1223,25 @@
                 The makefiles will check this emit a sanity error if it is
                 missing or the wrong version.
                 <p>
-                In particular, older Linux systems will likely not have the
-                right version of ALSA installed, for example
-                Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently 
-                recent ALSA distribution.
-                On rpm-based systems, you can see if ALSA is installed by 
-                running this command:
+                    In particular, older Linux systems will likely not have the
+                    right version of ALSA installed, for example
+                    Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently
+                    recent ALSA distribution.
+                    On rpm-based systems, you can see if ALSA is installed by
+                    running this command:
                 <pre>
                     <tt>rpm -qa | grep alsa</tt>
                 </pre>
                 Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
                 <p> 
-                If your distribution does not come with ALSA, and you can't
-                find ALSA packages built for your particular system,
-                you can try to install the pre-built ALSA rpm packages from
-                <a href="http://www.freshrpms.net/" target="_blank">
-                <tt>www.freshrpms.net</tt></a>. 
-                Note that installing a newer ALSA could
-                break sound output if an older version of ALSA was previously
-                installed on the system, but it will enable JDK compilation.
+                    If your distribution does not come with ALSA, and you can't
+                    find ALSA packages built for your particular system,
+                    you can try to install the pre-built ALSA rpm packages from
+                    <a href="http://www.freshrpms.net/" target="_blank">
+                        <tt>www.freshrpms.net</tt></a>.
+                    Note that installing a newer ALSA could
+                    break sound output if an older version of ALSA was previously
+                    installed on the system, but it will enable JDK compilation.
                 <blockquote>
                     Installation: execute as root<br>
                     [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
@@ -1228,7 +1256,7 @@
                 </blockquote>
                 As a last resort you can go to the
                 <a href="http://www.alsa-project.org" target="_blank">
-                Advanced Linux Sound Architecture Site</a> and build it from
+                    Advanced Linux Sound Architecture Site</a> and build it from
                 source.
                 <blockquote>
                     Download driver and library
@@ -1256,9 +1284,9 @@
                 building the JDK platform. To actually use ALSA sound drivers, more
                 steps are necessary as outlined in the documentation on ALSA's homepage.
                 <p>
-                ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
-                the <tt>alsa-lib-0.9.1</tt> directory and then in 
-                <tt>alsa-driver-0.9.1</tt>.
+                    ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
+                    the <tt>alsa-lib-0.9.1</tt> directory and then in
+                    <tt>alsa-driver-0.9.1</tt>.
             </blockquote>
             There are no ALT* variables to change the assumed locations of ALSA,
             the makefiles will expect to find the ALSA include files and library at:
@@ -1273,15 +1301,15 @@
                 on Windows which can be supplied by 
                 <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>. 
                 <p>
-                The OpenJDK build requires CYGWIN version 1.5.12 or newer. 
-                Information about CYGWIN can
-                be obtained from the CYGWIN website at 
-                <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>. 
+                    The OpenJDK build requires CYGWIN version 1.5.12 or newer.
+                    Information about CYGWIN can
+                    be obtained from the CYGWIN website at
+                    <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>.
                 <p>
-                By default CYGWIN doesn't install all the tools required for building
-                the OpenJDK.
-                Along with the default installation, you need to install
-                the following tools.
+                    By default CYGWIN doesn't install all the tools required for building
+                    the OpenJDK.
+                    Along with the default installation, you need to install
+                    the following tools.
                 <blockquote>
                     <table border="1">
                         <thead>
@@ -1298,21 +1326,21 @@
                                 <td>Devel</td>
                                 <td>binutils</td>
                                 <td>The GNU assembler, linker and binary
-                                utilities</td>
+                                    utilities</td>
                             </tr>
                             <tr>
                                 <td>make.exe</td>
                                 <td>Devel</td>
                                 <td>make</td>
                                 <td>The GNU version of the 'make' utility built for CYGWIN.<br>
-                                <b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
+                                    <b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
                             </tr>
                             <tr>
                                 <td>m4.exe</td>
                                 <td>Interpreters</td>
                                 <td>m4</td>
                                 <td>GNU implementation of the traditional Unix macro
-                                processor</td>
+                                    processor</td>
                             </tr>
                             <tr>
                                 <td>cpio.exe</td>
@@ -1354,21 +1382,21 @@
                     </table>
                 </blockquote>
                 <p>
-                Note that the CYGWIN software can conflict with other non-CYGWIN
-                software on your Windows system.
-                CYGWIN provides a
-                <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
-                known issues and problems, of particular interest is the
-                section on
-                <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
-                BLODA (applications that interfere with CYGWIN)</a>.
+                    Note that the CYGWIN software can conflict with other non-CYGWIN
+                    software on your Windows system.
+                    CYGWIN provides a
+                    <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
+                    known issues and problems, of particular interest is the
+                    section on
+                    <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
+                        BLODA (applications that interfere with CYGWIN)</a>.
                 <p>
-                <b>WARNING:</b>
-                Be very careful with <b><tt>link.exe</tt></b>, it will conflict
-                with the Visual Studio version. You need the Visual Studio
-                version of <tt>link.exe</tt>, not the CYGWIN one.
-                So it's important that the Visual Studio paths in PATH preceed
-                the CYGWIN path <tt>/usr/bin</tt>.
+                    <b>WARNING:</b>
+                    Be very careful with <b><tt>link.exe</tt></b>, it will conflict
+                    with the Visual Studio version. You need the Visual Studio
+                    version of <tt>link.exe</tt>, not the CYGWIN one.
+                    So it's important that the Visual Studio paths in PATH preceed
+                    the CYGWIN path <tt>/usr/bin</tt>.
             </blockquote>
             <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
             <blockquote>
@@ -1377,7 +1405,7 @@
                 OpenJDK.
                 This SDK can be downloaded from 
                 <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
-                Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
+                    Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
                 If the link above becomes obsolete, the SDK can be found from 
                 <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
                 (search with "DirectX 9.0 SDK Update Summer 2004"). 
@@ -1431,14 +1459,14 @@
                 </li>
             </ol>
             <p>
-            <strong>Solaris:</strong>
-            Note that ARCH_DATA_MODEL is really only needed on Solaris to
-            indicate you want to built the 64-bit version.
-            And before the Solaris 64-bit binaries can be used, they
-            must be merged with the binaries from a separate 32-bit build. 
-            The merged binaries may then be used in either 32-bit or 64-bit mode, with
-            the selection occurring at runtime 
-            with the <tt>-d32</tt> or <tt>-d64</tt> options. 
+                <strong>Solaris:</strong>
+                Note that ARCH_DATA_MODEL is really only needed on Solaris to
+                indicate you want to built the 64-bit version.
+                And before the Solaris 64-bit binaries can be used, they
+                must be merged with the binaries from a separate 32-bit build.
+                The merged binaries may then be used in either 32-bit or 64-bit mode, with
+                the selection occurring at runtime
+                with the <tt>-d32</tt> or <tt>-d64</tt> options.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
@@ -1450,37 +1478,39 @@
             The default output directory is
             <tt>build/<i>platform</i></tt>,
             where <tt><i>platform</i></tt> is one of
-            <tt><ul>
-                    <li>solaris-sparc</li>
-                    <li>solaris-sparcv9</li>
-                    <li>solaris-i586</li>
-                    <li>solaris-amd64</li>
-                    <li>linux-i586</li>
-                    <li>linux-amd64</li>
-                    <li>windows-i586</li>
-                    <li>windows-amd64</li>
-            </ul></tt>
+            <blockquote>
+                <ul>
+                    <li><tt>solaris-sparc</tt></li>
+                    <li><tt>solaris-sparcv9</tt></li>
+                    <li><tt>solaris-i586</tt></li>
+                    <li><tt>solaris-amd64</tt></li>
+                    <li><tt>linux-i586</tt></li>
+                    <li><tt>linux-amd64</tt></li>
+                    <li><tt>windows-i586</tt></li>
+                    <li><tt>windows-amd64</tt></li>
+                </ul>
+            </blockquote>
             In particular, the 
             <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
             directory should contain executables for the 
             OpenJDK tools and utilities.
             <p>
-            You can test that the build completed properly by using the build
-            to run the various demos that you will find in the 
-            <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
-            directory.
+                You can test that the build completed properly by using the build
+                to run the various demos that you will find in the
+                <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
+                directory.
             <p>
-            The provided regression tests can be run with the <tt>jtreg</tt>
-            utility from 
-            <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
+                The provided regression tests can be run with the <tt>jtreg</tt>
+                utility from
+                <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
         </blockquote>
         <!-- ------------------------------------------------------ -->
         <hr>
         <h2><a name="variables">Environment/Make Variables</a></h2>
         <p>
-        Some of the
-        environment or make variables (just called <b>variables</b> in this
-        document) that can impact the build are:
+            Some of the
+            environment or make variables (just called <b>variables</b> in this
+            document) that can impact the build are:
         <blockquote>
             <dl>
                 <dt><a name="path"><tt>PATH</tt></a> </dt>
@@ -1488,11 +1518,11 @@
                     <ul>
                         <li>The location of the GNU make binary</li>
                         <li>The location of the Bootstrap JDK <tt>java</tt> 
-                        (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
+                            (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
                         <li>The location of the C/C++ compilers 
-                        (see <a href="#compilers"><tt>compilers</tt></a>)</li>
+                            (see <a href="#compilers"><tt>compilers</tt></a>)</li>
                         <li>The location or locations for the Unix command utilities
-                        (e.g. <tt>/usr/bin</tt>)</li>
+                            (e.g. <tt>/usr/bin</tt>)</li>
                     </ul>
                 </dd>
                 <dt><tt>MILESTONE</tt> </dt>
@@ -1523,14 +1553,6 @@
                     You should always install your own local Bootstrap JDK and
                     always set <tt>ALT_BOOTDIR</tt> explicitly.
                 </dd>
-                <dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
-                <dd>
-                    The location of the binary plugs installation.
-                    See <a href="#binaryplugs">Binary Plugs</a> for more information.
-                    You should always have a local copy of a
-                    recent Binary Plugs install image
-                    and set this variable to that location.
-                </dd>
                 <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
                 <dd>
                     The location of a previously built JDK installation. 
@@ -1627,36 +1649,19 @@
                     Where each of these directories contain the import JDK image
                     for that platform.
                 </dd>
-                <dt><a name="ALT_BUILD_BINARY_PLUGS_PATH"><tt>ALT_BUILD_BINARY_PLUGS_PATH</tt></a></dt>
-                <dd>
-                    These are useful in managing builds on multiple platforms.
-                    The default network location for all of the binary plug images
-                    for all platforms. 
-                    If <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
-                    is not set, this directory will be used and should contain 
-                    the following directories:
-                    <tt>solaris-sparc</tt>,
-                    <tt>solaris-i586</tt>,
-                    <tt>solaris-sparcv9</tt>,
-                    <tt>solaris-amd64</tt>,
-                    <tt>linux-i586</tt>,
-                    <tt>linux-amd64</tt>,
-                    <tt>windows-i586</tt>,
-                    and
-                    <tt>windows-amd64</tt>.
-                    Where each of these directories contain the binary plugs image
-                    for that platform.
-                </dd>
                 <dt><strong>Windows specific:</strong></dt>
                 <dd>
                     <dl>
-                        <dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
+                        <dt><a name="ALT_WINDOWSSDKDIR"><tt>ALT_WINDOWSSDKDIR</tt></a> </dt>
                         <dd>
                             The location of the 
-                            Microsoft Visual Studio
-                            tools 'bin' directory.
-                            The default is usually derived from
-                            <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
+                            Microsoft Windows SDK where some tools will be
+			    located.
+			    The default is whatever WINDOWSSDKDIR is set to
+			    (or WindowsSdkDir) or the path
+			    <pre>
+                            c:\Program Files\Microsoft SDKs\Windows\v6.1a
+			    </pre>
                         </dd>
                         <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
                         <dd>
@@ -1694,17 +1699,17 @@
             Look for the check list of the platform you are building on in the
             <a href="#contents">Table of Contents</a>.
             <p>
-            You can validate your build environment by using the <tt>sanity</tt>
-            target.
-            Any errors listed
-            will stop the build from starting, and any warnings may result in
-            a flawed product build.
-            We strongly encourage you to evaluate every
-            sanity check warning and fix it if required, before you proceed
-            further with your build.
+                You can validate your build environment by using the <tt>sanity</tt>
+                target.
+                Any errors listed
+                will stop the build from starting, and any warnings may result in
+                a flawed product build.
+                We strongly encourage you to evaluate every
+                sanity check warning and fix it if required, before you proceed
+                further with your build.
             <p>
-            Some of the more common problems with builds are briefly described
-            below, with suggestions for remedies.
+                Some of the more common problems with builds are briefly described
+                below, with suggestions for remedies.
             <ul>
                 <li>
                     <b>Slow Builds:</b>
@@ -1715,15 +1720,15 @@
                         machine, setting it to more than the the number of CPUs is probably
                         not a good idea).
                         <p>
-                        Creating the javadocs can be very slow, if you are running
-                        javadoc, consider skipping that step.
+                            Creating the javadocs can be very slow, if you are running
+                            javadoc, consider skipping that step.
                         <p>
-                        Faster hardware and more RAM always helps too.
-                        The VM build tends to be CPU intensive (many C++ compiles),
-                        and the rest of the JDK will often be disk intensive.
+                            Faster hardware and more RAM always helps too.
+                            The VM build tends to be CPU intensive (many C++ compiles),
+                            and the rest of the JDK will often be disk intensive.
                         <p>
-                        Faster compiles are possible using a tool called
-                        <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
+                            Faster compiles are possible using a tool called
+                            <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
                     </blockquote>
                 </li>
                 <li>
@@ -1732,10 +1737,10 @@
                         If you see warnings that refer to file time stamps, e.g.
                         <blockquote>
                             <i>Warning message:</i><tt> File `xxx' has modification time in
-                            the future.</tt>
+                                the future.</tt>
                             <br>
                             <i>Warning message:</i> <tt> Clock skew detected. Your build may
-                            be incomplete.</tt> 
+                                be incomplete.</tt>
                         </blockquote>
                         These warnings can occur when the clock on the build machine is out of
                         sync with the timestamps on the source files. Other errors, apparently
@@ -1747,9 +1752,9 @@
                         when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
                         in the 1.4 source code.
                         <p>
-                        If you see these warnings, reset the clock on the build
-                        machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
-                        containing the build output, and restart the build from the beginning.
+                            If you see these warnings, reset the clock on the build
+                            machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
+                            containing the build output, and restart the build from the beginning.
                     </blockquote>
                 </li>
                 <li>
@@ -1776,32 +1781,28 @@
                     <blockquote>
                         This is probably an issue with SELinux (See
                         <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
-                        http://en.wikipedia.org/wiki/SELinux</a>).
+                            http://en.wikipedia.org/wiki/SELinux</a>).
                         Parts of the VM is built without the <tt>-fPIC</tt> for
                         performance reasons.
                         <p>
-                        To completely disable SELinux:
-                        <tt>
-                            <ol>
-                                <li>$ su root</li>
-                                <li># system-config-securitylevel</li>
-                                <li>In the window that appears, select the SELinux tab</li>
-                                <li>Disable SELinux</li>
-                            </ol>
-                        </tt>
+                            To completely disable SELinux:
+                        <ol>
+                            <li><tt>$ su root</tt></li>
+                            <li><tt># system-config-securitylevel</tt></li>
+                            <li><tt>In the window that appears, select the SELinux tab</tt></li>
+                            <li><tt>Disable SELinux</tt></li>
+                        </ol>
                         <p>
-                        Alternatively, instead of completely disabling it you could
-                        disable just this one check.
-                        <tt>
-                            <ol>
-                                <li>Select System->Administration->SELinux Management</li>
-                                <li>In the SELinux Management Tool which appears, 
+                            Alternatively, instead of completely disabling it you could
+                            disable just this one check.
+                        <ol>
+                            <li>Select System->Administration->SELinux Management</li>
+                            <li>In the SELinux Management Tool which appears,
                                 select "Boolean" from the menu on the left</li>
-                                <li>Expand the "Memory Protection" group</li>
-                                <li>Check the first item, labeled
+                            <li>Expand the "Memory Protection" group</li>
+                            <li>Check the first item, labeled
                                 "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
-                            </ol>
-                        </tt>
+                        </ol>
                     </blockquote>
                 </li>
                 <li>
@@ -1810,7 +1811,7 @@
                         The CYGWIN software can conflict with other non-CYGWIN
                         software. See the CYGWIN FAQ section on
                         <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
-                        BLODA (applications that interfere with CYGWIN)</a>.
+                            BLODA (applications that interfere with CYGWIN)</a>.
                     </blockquote>
                 </li>
                 <li>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_source.sh	Wed Jul 05 17:30:53 2017 +0200
@@ -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
+
--- a/hotspot/.hgtags	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/.hgtags	Wed Jul 05 17:30:53 2017 +0200
@@ -136,3 +136,5 @@
 3f3653ab7af8dc1ddb9fa75dad56bf94f89e81a8 jdk7-b121
 3a548dc9cb456110ca8fc1514441a8c3bda0014d jdk7-b122
 5484e7c53fa7da5e869902437ee08a9ae10c1c69 hs20-b03
+9669f9b284108a9ee0a0ccbe215c37a130c9dcf5 jdk7-b123
+9669f9b284108a9ee0a0ccbe215c37a130c9dcf5 hs20-b04
--- a/hotspot/agent/src/os/linux/libproc_impl.c	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/os/linux/libproc_impl.c	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/os/linux/ps_core.c	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/os/linux/ps_core.c	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/os/linux/ps_proc.c	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/os/linux/ps_proc.c	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/os/linux/symtab.c	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/os/linux/symtab.c	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/os/linux/symtab.h	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/os/linux/symtab.h	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeInvoke.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeInvoke.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithCPIndex.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithCPIndex.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheEntry.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheEntry.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/hotspot_distro	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/hotspot_distro	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/hotspot_version	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/hotspot_version	Wed Jul 05 17:30:53 2017 +0200
@@ -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
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=20
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=04
+HS_BUILD_NUMBER=05
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/hotspot/make/jprt.gmk	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/jprt.gmk	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/jprt.properties	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/jprt.properties	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/defs.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/defs.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/jvmti.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/jvmti.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/mapfile-vers-debug	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/mapfile-vers-debug	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/mapfile-vers-product	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/mapfile-vers-product	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/product.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/product.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/saproc.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/saproc.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/shark.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/shark.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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.
 #
--- a/hotspot/make/linux/makefiles/sparcWorks.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/linux/makefiles/sparcWorks.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/solaris/makefiles/defs.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/solaris/makefiles/defs.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/solaris/makefiles/fastdebug.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/solaris/makefiles/fastdebug.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/solaris/makefiles/jvmti.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/solaris/makefiles/jvmti.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/solaris/makefiles/optimized.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/solaris/makefiles/optimized.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/solaris/makefiles/product.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/solaris/makefiles/product.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/solaris/makefiles/saproc.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/solaris/makefiles/saproc.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/windows/build.bat	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/windows/build.bat	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/windows/get_msc_ver.sh	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/windows/get_msc_ver.sh	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/windows/makefiles/defs.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/windows/makefiles/defs.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/make/windows/makefiles/sanity.make	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/make/windows/makefiles/sanity.make	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/src/os/solaris/dtrace/hotspot.d	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/os/solaris/dtrace/hotspot.d	Wed Jul 05 17:30:53 2017 +0200
@@ -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.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.il	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.il	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.il	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.il	Wed Jul 05 17:30:53 2017 +0200
@@ -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.
 //
 // This code is free software; you can redistribute it and/or modify it
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Wed Jul 05 17:30:53 2017 +0200
@@ -1825,23 +1825,11 @@
   }
 }
 
-
-class G1CMIsAliveClosure: public BoolObjectClosure {
-  G1CollectedHeap* _g1;
- public:
-  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));
-  }
-};
+bool G1CMIsAliveClosure::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 {
   G1CollectedHeap* _g1;
@@ -1896,16 +1884,15 @@
   rp->setup_policy(clear_all_soft_refs);
   assert(_markStack.isEmpty(), "mark stack should be empty");
 
-  G1CMIsAliveClosure   g1IsAliveClosure  (g1h);
-  G1CMKeepAliveClosure g1KeepAliveClosure(g1h, this, nextMarkBitMap());
+  G1CMIsAliveClosure   g1_is_alive(g1h);
+  G1CMKeepAliveClosure g1_keep_alive(g1h, this, nextMarkBitMap());
   G1CMDrainMarkingStackClosure
-    g1DrainMarkingStackClosure(nextMarkBitMap(), &_markStack,
-                               &g1KeepAliveClosure);
+    g1_drain_mark_stack(nextMarkBitMap(), &_markStack, &g1_keep_alive);
 
   // XXXYYY  Also: copy the parallel ref processing code from CMS.
-  rp->process_discovered_references(&g1IsAliveClosure,
-                                    &g1KeepAliveClosure,
-                                    &g1DrainMarkingStackClosure,
+  rp->process_discovered_references(&g1_is_alive,
+                                    &g1_keep_alive,
+                                    &g1_drain_mark_stack,
                                     NULL);
   assert(_markStack.overflow() || _markStack.isEmpty(),
          "mark stack should be empty (unless it overflowed)");
@@ -1918,8 +1905,8 @@
   assert(!rp->discovery_enabled(), "should have been disabled");
 
   // Now clean up stale oops in SymbolTable and StringTable
-  SymbolTable::unlink(&g1IsAliveClosure);
-  StringTable::unlink(&g1IsAliveClosure);
+  SymbolTable::unlink(&g1_is_alive);
+  StringTable::unlink(&g1_is_alive);
 }
 
 void ConcurrentMark::swapMarkBitMaps() {
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp	Wed Jul 05 17:30:53 2017 +0200
@@ -33,6 +33,25 @@
 typedef GenericTaskQueue<oop>            CMTaskQueue;
 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
 // class, with one bit per (1<<_shifter) HeapWords.
 
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Wed Jul 05 17:30:53 2017 +0200
@@ -1192,6 +1192,7 @@
     return false;
   }
 
+  DTraceGCProbeMarker gc_probe_marker(true /* full */);
   ResourceMark rm;
 
   if (PrintHeapAtGC) {
@@ -1768,6 +1769,7 @@
   _g1_policy(policy_),
   _dirty_card_queue_set(false),
   _into_cset_dirty_card_queue_set(false),
+  _is_alive_closure(this),
   _ref_processor(NULL),
   _process_strong_tasks(new SubTasksDone(G1H_PS_NumElements)),
   _bot_shared(NULL),
@@ -2061,7 +2063,8 @@
                                          mr,    // span
                                          false, // Reference discovery is not atomic
                                          true,  // mt_discovery
-                                         NULL,  // is alive closure: need to fill this in for efficiency
+                                         &_is_alive_closure, // is alive closure
+                                                             // for efficiency
                                          ParallelGCThreads,
                                          ParallelRefProcEnabled,
                                          true); // Setting next fields of discovered
@@ -3211,13 +3214,14 @@
     return false;
   }
 
+  DTraceGCProbeMarker gc_probe_marker(false /* full */);
+  ResourceMark rm;
+
   if (PrintHeapAtGC) {
     Universe::print_heap_before_gc();
   }
 
   {
-    ResourceMark rm;
-
     // This call will decide whether this pause is an initial-mark
     // pause. If it is, during_initial_mark_pause() will return true
     // for the duration of this pause.
@@ -3956,8 +3960,6 @@
   // Now restore saved marks, if any.
   if (_objs_with_preserved_marks != NULL) {
     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() ==
               _preserved_marks_of_objs->length(), "Both or none.");
     for (int i = 0; i < _objs_with_preserved_marks->length(); i++) {
@@ -4052,7 +4054,10 @@
 }
 
 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) {
       assert(_preserved_marks_of_objs == NULL, "Both or none.");
       _objs_with_preserved_marks =
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Wed Jul 05 17:30:53 2017 +0200
@@ -849,6 +849,12 @@
   void print_gc_alloc_regions();
 #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
   ReferenceProcessor* _ref_processor;
 
@@ -893,7 +899,7 @@
   // specified by the policy object.
   jint initialize();
 
-  void ref_processing_init();
+  virtual void ref_processing_init();
 
   void set_par_threads(int t) {
     SharedHeap::set_par_threads(t);
--- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Wed Jul 05 17:30:53 2017 +0200
@@ -1058,10 +1058,11 @@
 #endif
 
 void ParNewGeneration::preserve_mark_if_necessary(oop obj, markOop m) {
-  if ((m != markOopDesc::prototype()) &&
-      (!UseBiasedLocking || (m != markOopDesc::biased_locking_prototype()))) {
+  if (m->must_be_preserved_for_promotion_failure(obj)) {
+    // We should really have separate per-worker stacks, rather
+    // than use locking of a common pair of stacks.
     MutexLocker ml(ParGCRareEvent_lock);
-    DefNewGeneration::preserve_mark_if_necessary(obj, m);
+    preserve_mark(obj, m);
   }
 }
 
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Wed Jul 05 17:30:53 2017 +0200
@@ -694,6 +694,8 @@
 void PSScavenge::oop_promotion_failed(oop obj, markOop obj_mark) {
   _promotion_failed = true;
   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;
     _preserved_oop_stack.push(obj);
     _preserved_mark_stack.push(obj_mark);
--- a/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Wed Jul 05 17:30:53 2017 +0200
@@ -209,4 +209,15 @@
   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
--- a/hotspot/src/share/vm/memory/defNewGeneration.cpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp	Wed Jul 05 17:30:53 2017 +0200
@@ -684,23 +684,28 @@
   _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) {
   if (m->must_be_preserved_for_promotion_failure(obj)) {
-    _objs_with_preserved_marks.push(obj);
-    _preserved_marks_of_objs.push(m);
+    preserve_mark(obj, m);
   }
 }
 
 void DefNewGeneration::handle_promotion_failure(oop old) {
-  preserve_mark_if_necessary(old, old->mark());
-  if (!_promotion_failed && PrintPromotionFailure) {
+  if (PrintPromotionFailure && !_promotion_failed) {
     gclog_or_tty->print(" (promotion failure size = " SIZE_FORMAT ") ",
                         old->size());
   }
-
+  _promotion_failed = true;
+  preserve_mark_if_necessary(old, old->mark());
   // forward to self
   old->forward_to(old);
-  _promotion_failed = true;
 
   _promo_failure_scan_stack.push(old);
 
--- a/hotspot/src/share/vm/memory/defNewGeneration.hpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/memory/defNewGeneration.hpp	Wed Jul 05 17:30:53 2017 +0200
@@ -85,6 +85,7 @@
   // Preserve the mark of "obj", if necessary, in preparation for its mark
   // word being overwritten with a self-forwarding-pointer.
   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.
   // They should always contain the same number of elements.
--- a/hotspot/src/share/vm/oops/markOop.inline.hpp	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/src/share/vm/oops/markOop.inline.hpp	Wed Jul 05 17:30:53 2017 +0200
@@ -30,7 +30,7 @@
 #include "oops/markOop.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 {
   assert(UseBiasedLocking, "unexpected");
   if (has_bias_pattern()) {
@@ -47,14 +47,15 @@
   return (!is_unlocked() || !has_no_hash());
 }
 
+// Should this header be preserved during GC?
 inline bool markOopDesc::must_be_preserved(oop obj_containing_mark) const {
   if (!UseBiasedLocking)
     return (!is_unlocked() || !has_no_hash());
   return must_be_preserved_with_bias(obj_containing_mark);
 }
 
-// Should this header (including its age bits) be preserved in the
-// case of a promotion failure during scavenge?
+// Should this header be preserved in the case of a promotion failure
+// during scavenge (when biased locking is enabled)?
 inline bool markOopDesc::must_be_preserved_with_bias_for_promotion_failure(oop obj_containing_mark) const {
   assert(UseBiasedLocking, "unexpected");
   // We don't explicitly save off the mark words of biased and
@@ -70,18 +71,20 @@
       prototype_for_object(obj_containing_mark)->has_bias_pattern()) {
     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 {
   if (!UseBiasedLocking)
-    return (this != prototype());
+    return (!is_unlocked() || !has_no_hash());
   return must_be_preserved_with_bias_for_promotion_failure(obj_containing_mark);
 }
 
 
-// Should this header (including its age bits) be preserved in the
-// case of a scavenge in which CMS is the old generation?
+// Same as must_be_preserved_with_bias_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_with_bias_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const {
   assert(UseBiasedLocking, "unexpected");
   // CMS scavenges preserve mark words in similar fashion to promotion failures; see above
@@ -89,11 +92,14 @@
       klass_of_obj_containing_mark->klass_part()->prototype_header()->has_bias_pattern()) {
     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 {
   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);
 }
 
--- a/hotspot/test/Makefile	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/test/Makefile	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/test/compiler/6431242/Test.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/test/compiler/6431242/Test.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/hotspot/test/compiler/6857159/Test6857159.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/test/compiler/6857159/Test6857159.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/hotspot/test/compiler/6877254/Test.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/test/compiler/6877254/Test.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/hotspot/test/compiler/6895383/Test.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/test/compiler/6895383/Test.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/hotspot/test/compiler/6896727/Test.java	Tue Dec 28 16:12:31 2010 -0800
+++ b/hotspot/test/compiler/6896727/Test.java	Wed Jul 05 17:30:53 2017 +0200
@@ -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.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/make/Defs-internal.gmk	Tue Dec 28 16:12:31 2010 -0800
+++ b/make/Defs-internal.gmk	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/make/deploy-rules.gmk	Tue Dec 28 16:12:31 2010 -0800
+++ b/make/deploy-rules.gmk	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/make/hotspot-rules.gmk	Tue Dec 28 16:12:31 2010 -0800
+++ b/make/hotspot-rules.gmk	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/make/install-rules.gmk	Tue Dec 28 16:12:31 2010 -0800
+++ b/make/install-rules.gmk	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/make/jprt.gmk	Tue Dec 28 16:12:31 2010 -0800
+++ b/make/jprt.gmk	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- a/make/sanity-rules.gmk	Tue Dec 28 16:12:31 2010 -0800
+++ b/make/sanity-rules.gmk	Wed Jul 05 17:30:53 2017 +0200
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/scripts/hgforest.sh	Wed Jul 05 17:30:53 2017 +0200
@@ -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
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/scripts/update_copyright_year.sh	Wed Jul 05 17:30:53 2017 +0200
@@ -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
+