changeset 1213:b70554883dbd icedtea-2.6pre12

Merge jdk7u80-b03
author andrew
date Fri, 28 Nov 2014 03:10:16 +0000
parents c8b7772b0bb9 (diff) 928d01695cd2 (current diff)
children d55d64e4603c f16c298d91bd
files .hgtags
diffstat 9 files changed, 939 insertions(+), 149 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Nov 20 09:53:05 2014 -0800
+++ b/.hgtags	Fri Nov 28 03:10:16 2014 +0000
@@ -50,6 +50,7 @@
 3ac6dcf7823205546fbbc3d4ea59f37358d0b0d4 jdk7-b73
 2c88089b6e1c053597418099a14232182c387edc jdk7-b74
 d1516b9f23954b29b8e76e6f4efc467c08c78133 jdk7-b75
+f0bfd9bd1a0e674288a8a4d17dcbb9e632b42e6d icedtea7-1.12
 c8b63075403d53a208104a8a6ea5072c1cb66aab jdk7-b76
 1f17ca8353babb13f4908c1f87d11508232518c8 jdk7-b77
 ab4ae8f4514693a9fe17ca2fec0239d8f8450d2c jdk7-b78
@@ -63,6 +64,7 @@
 433a60a9c0bf1b26ee7e65cebaa89c541f497aed jdk7-b86
 6b1069f53fbc30663ccef49d78c31bb7d6967bde jdk7-b87
 82135c848d5fcddb065e98ae77b81077c858f593 jdk7-b88
+195fcceefddce1963bb26ba32920de67806ed2db icedtea7-1.13
 7f1ba4459972bf84b8201dc1cc4f62b1fe1c74f4 jdk7-b89
 425ba3efabbfe0b188105c10aaf7c3c8fa8d1a38 jdk7-b90
 97d8b6c659c29c8493a8b2b72c2796a021a8cf79 jdk7-b91
@@ -111,6 +113,7 @@
 ddc2fcb3682ffd27f44354db666128827be7e3c3 jdk7-b134
 783bd02b4ab4596059c74b10a1793d7bd2f1c157 jdk7-b135
 2fe76e73adaa5133ac559f0b3c2c0707eca04580 jdk7-b136
+d4aea1a51d625f5601c840714c7c94f1de5bc1af icedtea-1.14
 7654afc6a29e43cb0a1343ce7f1287bf690d5e5f jdk7-b137
 fc47c97bbbd91b1f774d855c48a7e285eb1a351a jdk7-b138
 7ed6d0b9aaa12320832a7ddadb88d6d8d0dda4c1 jdk7-b139
@@ -123,6 +126,7 @@
 2d38c2a79c144c30cd04d143d83ee7ec6af40771 jdk7-b146
 3ac30b3852876ccad6bd61697b5f9efa91ca7bc6 jdk7u1-b01
 d91364304d7c4ecd34caffdba2b840aeb0d10b51 jdk7-b147
+3defd24c2671eb2e7796b5dc45b98954341d73a7 icedtea-2.0-branchpoint
 34451dc0580d5c95d97b95a564e6198f36545d68 jdk7u1-b02
 bf735d852f79bdbb3373c777eec3ff27e035e7ba jdk7u1-b03
 f66a2bada589f4157789e6f66472954d2f1c114e jdk7u1-b04
@@ -141,6 +145,7 @@
 b2deaf5bde5ec455a06786e8e2aea2e673be13aa jdk7u2-b12
 c95558e566ac3605c480a3d070b1102088dab07f jdk7u2-b13
 e30fd289f0019700575593ee4e1635fbc5c9a484 jdk7u2-b21
+a66b58021165f5a43e3974fe5fb9fead29824098 icedtea-2.1-branchpoint
 e30fd289f0019700575593ee4e1635fbc5c9a484 jdk7u3-b02
 becd013ae6072a6633ba015fc4f5862fca589cee jdk7u3-b03
 d64361a28584728aa25dca3781cffbaf4199e088 jdk7u3-b04
@@ -157,6 +162,7 @@
 2b07c262a8a9ff78dc908efb9d7b3bb099df9ac4 jdk7u4-b10
 1abfee16e8cc7e3950052befa78dbf14a5ca9cfc jdk7u4-b11
 e6f915094dccbba16df6ebeb002e6867392eda40 jdk7u4-b12
+e7886f5ad6cc837092386fa513e670d4a770456c icedtea-2.2-branchpoint
 9108e3c2f07ffa218641d93893ac9928e95d213a jdk7u4-b13
 d9580838fd08872fc0da648ecfc6782704b4aac1 jdk7u4-b14
 008753000680a2008175d14b25373356f531aa07 jdk7u4-b15
@@ -186,11 +192,15 @@
 5f3645aa920d373b26d01b21f3b8b30fc4e10a0d jdk7u6-b10
 cd64596c2dd7f195a6d38b6269bab23e7fad4361 jdk7u6-b11
 61cfcee1d00cb4af288e640216af2bccbc3c9ef0 jdk7u6-b12
+cdab3bfb573b8832d539a8fa3e9c20f9f4965132 ppc-aix-port-b01
+06179726206f1411ed254f786be3477ca5763e37 ppc-aix-port-b02
+50f2b3cacf77467befb95b7d4fea15bbdb4d650a ppc-aix-port-b03
 9b9a6d318e8aa5b8f0e42d2d3d2c0c34cb3f986d jdk7u6-b13
 eff9ea1ca63df8656ebef9fedca0c647a210d807 jdk7u6-b14
 528f1589f5f2adf18d5d21384ba668b9aa79841e jdk7u6-b15
 7b77364eb09faac4c37ce9dd2c2308ca5525f18f jdk7u6-b16
 b7c1b441d131c70278de299b5d1e59dce0755dc5 jdk7u6-b17
+0e7b94bd450d4270d4e9bd6c040c94fa4be714a6 icedtea-2.3-branchpoint
 9c41f7b1460b106d18676899d24b6ea07de5a369 jdk7u6-b18
 56291720b5e578046bc02761dcad2a575f99fd8e jdk7u6-b19
 e79fa743fe5a801db4acc7a7daa68f581423e5d3 jdk7u6-b20
@@ -258,11 +268,13 @@
 c3e42860af1cfd997fe1895594f652f0d1e9984e jdk7u12-b07
 1a03ef4794dc8face4de605ae480d4c763e6b494 jdk7u12-b08
 87cf81226f2012e5c21131adac7880f7e4da1133 jdk7u12-b09
+8a10a3c51f1cd88009008cf1b82071797b5f516d icedtea-2.4-branchpoint
 745a15bb6d94765bb5c68048ff146590df9b8441 jdk7u14-b10
 2d8fdaa5bb55b937028e385633ce58de4dcdb69c jdk7u14-b11
 594dbbbb84add4aa310d51af7e298470d8cda458 jdk7u14-b12
 ae5c1b29297dae0375277a0b6428c266d8d77c71 jdk7u14-b13
 bb97ad0c9e5a0566e82b3b4bc43eabe680b89d97 jdk7u14-b14
+a20ac67cdbc245d1c14fec3061703232501f8334 ppc-aix-port-b04
 b534282bd377e3886b9d0d4760f6fdaa1804bdd3 jdk7u14-b15
 0e52db2d9bb8bc789f6c66f2cfb7cd2d3b0b16c6 jdk7u15-b01
 0324fca94d073b3aad77658224f17679f25c18b1 jdk7u15-b02
@@ -379,6 +391,7 @@
 f0cdb08a4624a623bdd178b04c4bf5a2fa4dc39a jdk7u45-b18
 82f1f76c44124c31cb1151833fc15c13547ab280 jdk7u45-b30
 f4373de4b75ba8d7f7a5d9c1f77e7884d9064b7e jdk7u45-b31
+11147a12bd8c6b02f98016a8d1151e56f42a43b6 jdk7u60-b00
 b73c006b5d81528dfb4104a79b994b56675bf75d jdk7u45-b33
 05742477836cb30235328181c8e6cae5d4bb06fd jdk7u45-b34
 d0d5badd77abce0469830466ff7b910d3621d847 jdk7u45-b35
@@ -428,8 +441,11 @@
 11147a12bd8c6b02f98016a8d1151e56f42a43b6 jdk7u60-b00
 88113cabda386320a087b288d43e792f523cc0ba jdk7u60-b01
 6bdacebbc97f0a03be45be48a6d5b5cf2f7fe77d jdk7u60-b02
+ba9872fc05cc333e3960551ae9fa61d51b8d5e06 icedtea-2.5pre01
+fc5d15cc35b4b47fe403c57fe4bf224fcfe1426c icedtea-2.5pre02
 87f2193da40d3a2eedca95108ae78403c7bdcd49 jdk7u60-b03
 d4397128f8b65eb96287128575dd1a3da6a7825b jdk7u60-b04
+9d6e6533c1e5f6c335a604f5b58e6f4f93b3e3dd icedtea-2.6pre01
 ea798405286d97f643ef809abcb1e13024b4f951 jdk7u60-b05
 b0940b205cab942512b5bca1338ab96a45a67832 jdk7u60-b06
 cae7bacaa13bb8c42a42fa35b156a7660874e907 jdk7u60-b07
@@ -439,7 +455,11 @@
 798468b91bcbb81684aea8620dbb31eaceb24c6c jdk7u60-b11
 e40360c10b2ce5b24b1eea63160b78e112aa5d3f jdk7u60-b12
 5e540a4d55916519f5604a422bfbb7a0967d0594 jdk7u60-b13
+07a06f1124248527df6a0caec615198a75f54673 icedtea-2.6pre02
+edf01342f3cb375746dba3620d359ac9a6e50aa8 icedtea-2.6pre03
 1ca6a368aec38ee91a41dc03899d7dc1037de44d jdk7u60-b14
+9f06098d4daa523fa85f5ee133ef91c3ecc1f242 icedtea-2.6pre04
+7c68cd21751684d6da92ef83e0128f473d2dddd6 icedtea-2.6pre05
 a95b821a2627295b90fb4ae8f3b8bc2ff9c64acc jdk7u60-b15
 19a3f6f48c541a8cf144eedffa0e52e108052e82 jdk7u60-b16
 472f5930e6cc8f307b5508995ee2edcf9913a852 jdk7u60-b17
@@ -518,5 +538,11 @@
 f42462b4dfd81539eacf90955d2d26e1dc1686c0 jdk7u72-b30
 d4397128f8b65eb96287128575dd1a3da6a7825b jdk7u80-b00
 90564f0970e92b844122be27f051655aef6dc423 jdk7u80-b01
+390d699dae6114bbe08e4a9bb8da6fec390fb5d8 icedtea-2.6pre07
+b07e2aed0a26019953ce2ac6b88e73091374a541 icedtea-2.6pre06
+df23e37605061532939ee85bba23c8368425deee icedtea-2.6pre08
 36e8397bf04d972519b80ca9e24e68a2ed1e4dbd jdk7u80-b02
+7faf56bdd78300c06ef2dae652877d17c9be0037 icedtea-2.6pre09
+200124c2f78dbf82ea3d023fab9ce4636c4fd073 icedtea-2.6pre10
+05e485acec14af17c2fc4d9d29d58b14f1a0f960 icedtea-2.6pre11
 4093bbbc90009bfd9311ccd6373c7a2f2755c9d9 jdk7u80-b03
--- a/.jcheck/conf	Thu Nov 20 09:53:05 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-project=jdk7
-bugids=dup
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README-ppc.html	Fri Nov 28 03:10:16 2014 +0000
@@ -0,0 +1,689 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
+<head>
+  <title>OpenJDK PowerPC/AIX Port</title>
+  <style type="text/css" id="internalStyle">
+    pre.terminal {
+      display: table;
+      color: white;
+      background-color: black;
+      border-style: solid;
+      border-width: 1px;
+      border-color: darkgray;
+      margin: 8px 0px 5px 0px;
+      padding: 2px;
+      width: auto;
+      overflow: auto;
+      font-family: monospace;
+    }
+    div.toc {
+	  background-color: #ffffee;
+	  border-bottom: 1px solid #cccccc;
+	  border-top: 1px solid #cccccc;
+	  border-left: 1px solid #cccccc;
+	  border-right: 1px solid #cccccc;
+	  padding: 5px;
+	  position: fixed;
+	  top: 10px;
+	  right: 10px;
+	  margin: 0px 5px 5px 5px;
+	  line-height: 1.5em;
+	  font-size: 80%;
+    }
+    div.tocHeader {
+	  float: right;
+    }
+    div.toc ul {
+	  list-style: none;
+	  margin-left: 10px;
+	  padding: 0;
+    }
+
+    div.tocBody > ul > li {
+      counter-reset: toc2_counter toc3_counter toc4_counter toc5_counter toc6_counter;
+    }
+    div.tocBody > ul ul > li {
+      counter-reset: toc3_counter toc4_counter toc5_counter toc6_counter;
+    }
+    div.tocBody > ul ul ul > li {
+      counter-reset: toc4_counter toc5_counter toc6_counter;
+    }
+    div.tocBody > ul ul ul ul > li {
+      counter-reset: toc5_counter toc6_counter;
+    }
+    div.tocBody > ul ul ul ul ul > li {
+      counter-reset: toc6_counter;
+    }
+    div.tocBody > ul ul > li:before {
+      content: counter(toc2_counter) "\0000a0";
+      counter-increment: toc2_counter;
+    }
+    div.tocBody > ul ul ul > li:before {
+      content: counter(toc2_counter) "." counter(toc3_counter) "\0000a0";
+      counter-increment: toc3_counter;
+    }
+    div.tocBody > ul ul ul ul > li:before {
+      content: counter(toc2_counter) "." counter(toc3_counter) "." counter(toc4_counter) "\0000a0";
+      counter-increment: toc4_counter;
+    }
+    div.tocBody > ul ul ul ul ul > li:before {
+      content: counter(toc2_counter) "." counter(toc3_counter) "." counter(toc4_counter) "." counter(toc5_counter) "\0000a0";
+      counter-increment: toc5_counter;
+    }
+    div.tocBody > ul ul ul ul ul ul > li:before {
+      content: counter(toc2_counter) "." counter(toc3_counter) "." counter(toc4_counter) "." counter(toc5_counter) "." counter(toc6_counter) "\0000a0";
+      counter-increment: toc6_counter;
+    }
+
+
+    body {
+      counter-reset: h2_counter h3_counter h4_counter h5_counter h6_counter;
+    }
+    h1 {
+      counter-reset: h2_counter h3_counter h4_counter h5_counter h6_counter;
+    }
+    h2 {
+      counter-reset: h3_counter h4_counter h5_counter h6_counter;
+    }
+    h3 {
+      counter-reset: h4_counter h5_counter h6_counter;
+    }
+    h4 {
+      counter-reset: h5_counter h6_counter;
+    }
+    h5 {
+      counter-reset: h6_counter;
+    }
+    h2:before {
+      content: counter(h2_counter) "\0000a0";
+      counter-increment: h2_counter;
+    }
+    h3:before {
+      content: counter(h2_counter) "." counter(h3_counter) "\0000a0";
+      counter-increment: h3_counter;
+    }
+    h4:before {
+      content: counter(h2_counter) "." counter(h3_counter) "." counter(h4_counter) "\0000a0";
+      counter-increment: h4_counter;
+    }
+    h5:before {
+      content: counter(h2_counter) "." counter(h3_counter) "." counter(h4_counter) "." counter(h5_counter) "\0000a0";
+      counter-increment: h5_counter;
+    }
+    h6:before {
+      content: counter(h2_counter) "." counter(h3_counter) "." counter(h4_counter) "." counter(h5_counter) "." counter(h6_counter) "\0000a0";
+      counter-increment: h6_counter;
+    }
+  </style>
+  <script>
+    function findElements(node, filter) {
+      var result = new Array();
+      var children = node.childNodes;
+      if (children.length === 0) return result;
+      for (var i=0; children[i]; i++) {
+        var child = children[i];
+        if (filter(child)) {
+          result.push(child);
+          result = result.concat(findElements(child, filter));
+        }
+      }
+      return result;
+    }
+
+    function headingFilter(node) {
+      if (node.nodeType === 1 /*Node.ELEMENT_NODE*/ && /[hH][1-6]/.test(node.nodeName)) {
+        return true;
+      }
+      return false;
+    }
+
+    function showOrHideTOC(tocID, buttonID) {
+      var toc = document.getElementById(tocID);
+      var button = document.getElementById(buttonID);
+      if (toc.style.display === "none") {
+        toc.style.display="block";
+        // Use a Unicode "minus" here, to make it the same width like a "plus"
+        // (see http://en.wikipedia.org/wiki/Minus_sign#Character_codes)
+        button.innerHTML = "[\u2212] ";
+      } else {
+        toc.style.display="none";
+        button.innerHTML = "[+] ";
+      }
+    }
+
+    function createTOCHeader() {
+      var tocHeader = document.createElement('div');
+      tocHeader.setAttribute("class", "tocHeader");
+      var a = document.createElement('a');
+      a.setAttribute("href","#");
+      a.setAttribute("onclick","showOrHideTOC('_TOC_BODY_', '_TOC_EXPAND_BUTTON_'); return false;");
+      var span = document.createElement('span');
+      span.setAttribute("id", "_TOC_EXPAND_BUTTON_");
+      span.appendChild(document.createTextNode("[\u2212] "));
+      a.appendChild(span);
+      a.appendChild(document.createTextNode("Table of Contents"));
+      tocHeader.appendChild(a);
+	  return tocHeader;
+    }
+
+    function createTOCBody() {
+      var tocBody = document.createElement('div');
+      tocBody.setAttribute("class", "tocBody");
+      tocBody.setAttribute("id", "_TOC_BODY_");
+	  return tocBody;
+    }
+
+    function createTOCElement(tocHeader, tocBody) {
+      var toc = document.createElement('div');
+      toc.setAttribute("class", "toc");
+      toc.appendChild(tocHeader);
+      toc.appendChild(tocBody);
+      return toc;
+    }
+
+    function insertAnchor(heading, anchor) {
+      var tag = document.createElement('a');
+      tag.setAttribute('name', anchor);
+      heading.parentNode.insertBefore(tag, heading);
+    }
+
+    function createLink(heading, anchor) {
+      var li = document.createElement('li');
+      var a = document.createElement('a');
+      a.setAttribute('href', "#" + anchor);
+      a.innerHTML = heading.innerHTML;
+      li.appendChild(a);
+      return li;
+    }
+
+    function createTOC(createIndex) {
+      if(typeof(createIndex)==='undefined') createIndex = false;
+      var headings = findElements(document.body, headingFilter);
+      var tocHeader = createTOCHeader();
+      var tocBody = createTOCBody();
+      var toc = createTOCElement(tocHeader, tocBody);
+      var ul = document.createElement('ul');
+      tocBody.appendChild(ul);
+      var currentLevel = 1;
+      for (var i=0; headings[i]; i++) {
+        var heading = headings[i];
+        var anchor = "_TOC_ANCHOR_" + i + "_";
+        // Create anchor just before the heading
+        insertAnchor(heading, anchor);
+        // Create the corresponding TOC entry which links right to 'anchor'
+        var level = parseInt(heading.nodeName.charAt(1), 10);
+        while (level > currentLevel) {
+          var _ul = document.createElement('ul');
+          if (ul.lastChild === null) {
+            ul.appendChild(_ul);
+          }
+          else {
+            ul.lastChild.appendChild(_ul);
+          }
+          ul = _ul;
+          currentLevel++;
+        }
+        while (level < currentLevel) {
+          do {
+            ul = ul.parentNode;
+          } while (ul.nodeName !== "UL");
+          currentLevel--;
+        }
+        ul.appendChild(createLink(heading, anchor));
+      }
+      document.body.insertBefore(toc, document.body.firstChild);
+    }
+  </script>
+</head>
+<body onload="createTOC();">
+
+<h1>OpenJDK PowerPC Port</h1>
+
+<p>
+This file contains some additional build instructions for
+the <a href="http://openjdk.java.net/projects/ppc-aix-port"> OpenJDK PowerPC
+Port for Linux and AIX</a>. It complements the general
+OpenJDK <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/raw-file/tip/README-builds.html">
+README-builds.html</a> file.
+</p>
+
+<h2>Building on Linux/PPC64</h2>
+
+<p>
+Currently, i.e. all versions after
+revision <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b01"><em>ppc-aix-port-b01</em></a>,
+should successfully build and run on Linux/PPC64. Passing
+<code>CORE_BUILD=true</code> on the build comamnd line will instruct the build
+system to create an interpreter-only version of the VM which is in general about
+an order of magnitude slower than a corresponding server VM with JIT
+compiler. But it is still fully functional (e.g. it passes JVM98) and can even
+be used to bootstrap itself. Starting with
+revision <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b03"><em>ppc-aix-port-b03</em></a>,
+it is possible to build without <code>CORE_BUILD=true</code> and create a
+JIT-enabled version of the VM (containing the C2 "<em>Server</em>" JIT
+compiler).
+</p>
+
+<p>
+Our current build system is a Power6 box running
+SLES 10.3 with gcc version 4.1.2 (in general, more recent Linux distributions
+should work as well).
+</p>
+
+<h3>Building with the OpenJDK Linux/PPC64 port as bootstrap JDK</h3>
+
+<p>
+A precompiled build of <em>ppc-aix-port-b03</em> is available
+for <a href="http://openjdkpower.osuosl.org/OpenJDK/download/bootstrap/openjdk1.7.0-ppc-aix-port-linux-ppc64-b03.tar.bz2">download</a>.
+With it and together with the other build dependencies fulfilled as described
+in the
+main <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/raw-file/tip/README-builds.html">
+README-builds.html</a> file you can build a debug version of the JDK from the
+top-level source directory with the following command line (additionally
+pass <code>CORE_BUILD=true</code> to build an interpreter-only version of the VM):
+</p>
+
+<pre class="terminal">
+&gt; make FT_CFLAGS=-m64 LANG=C \
+  ALT_BOOTDIR=&lt;path_to&gt;/jdk1.7.0-ppc-aix-port-b01 \
+  ARCH_DATA_MODEL=64 \
+  HOTSPOT_BUILD_JOBS=8 \
+  PARALLEL_COMPILE_JOBS=8 \
+  ALT_FREETYPE_LIB_PATH=/usr/local/lib \
+  ALT_FREETYPE_HEADERS_PATH=/usr/local/include \
+  ANT_HOME=/usr/local/apache-ant-1.8.4 \
+  VERBOSE=true \
+  CC_INTERP=true \
+  OPENJDK=true \
+  debug_build 2>&1 | tee build_ppc-aix-port_dbg.log
+</pre>
+
+<p>
+After the build finished successfully the results can be found under
+<tt>./build/linux-ppc64-debug/</tt>. Product and fastdebug versions can be
+build with the make targets <tt>product_build</tt> and
+<tt>fastdebug_build</tt> respectively (the build results will be located under
+<tt>./build/linux-ppc64/</tt> and <tt>./build/linux-ppc64-fastdebug/</tt>). On
+our transitional <a
+href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/index.html">ppc-aix-port
+project page</a> you can find the build logs of our regular nightly makes.
+</p>
+
+<h4>Problems with pre-installed ANT on newer Linux distros</h4>
+
+<p>
+Notice that pre-installed ANT version (i.e. ANT versions installed with the
+corresponding system package manager) may cause problems in conjunction with
+our bootstrap JDK. This is because they use various scripts from the
+<a href="http://www.jpackage.org/">jpackage</a> project to locate specific Java
+libraries and jar files. These scripts (in particular 
+<code>set_jvm_dirs()</code>
+in <code>/usr/share/java-utils/java-functions</code>) expect that executing
+"<code>java -fullversion</code>" will return a string starting with "java" but
+our OpenJDK port returns a string starting with "openjdk" instead.
+</p>
+
+<p>
+The problem can be easily solved by either editing the regular expressions
+which parse the version string
+in <code>/usr/share/java-utils/java-functions</code> (or the respective file of
+your Linux distribution) or by installing a plain version of ANT
+from <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>
+and passing its installation directory to the build via
+the <code>ANT_HOME</code> environment variable.
+</p>
+ 
+<h3>Building with the IBM JDK for Linux/PPC64 as bootstrap JDK</h3>
+
+<p>
+It is also possible to build with an <a
+href="http://www.ibm.com/developerworks/java/jdk/linux/download.html#java7">IBM
+JDK 7</a> bootstrap JDK (after all this is how we initially bootstrapped the
+port). But because the IBM JDK uses a different default implementation of the
+<tt>idlj</tt> and <tt>rmic</tt> compilers you will have to add the following
+two additional variables to the build command line to force the IBM JDK to
+fall back to the default Sun/Oracle version of the mentioned compilers (notice
+that the single quotes are crucial here to prevent the immediate expansion of
+<tt>$(ALT_BOOTDIR)</tt>):
+</p>
+
+<pre class="terminal">
+IDLJ='$(ALT_BOOTDIR)/bin/java -cp $(ALT_BOOTDIR)/lib/tools.jar com.sun.tools.corba.se.idl.toJavaPortable.Compile'
+RMIC='$(ALT_BOOTDIR)/bin/java -cp $(ALT_BOOTDIR)/lib/tools.jar sun.rmi.rmic.Main'
+</pre>
+
+<p>
+We successfully used build <tt>pxp6470-20110827_01</tt> of the IBM JDK but
+there have been <a
+href="http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2012-July/thread.html#21">reports</a>
+on the <a
+href="http://mail.openjdk.java.net/mailman/listinfo/ppc-aix-port-dev">ppc-aix-port-dev</a>
+mailing list that newer version of the IBM JDK (starting with build <tt>pxp6470sr1-20120330_01(SR1)</tt>) require some additional
+tweaking. Neil Richards advised in that mail thread to "<em>Just rename lib/ibmorbtools.jar to be something else.
+As the tools.jar tries to chain onto a file of that name, and that file
+contains the rmicext.properties files with the IBM-impl settings, moving
+that file off to one side should consistently cause rmic invocations to
+use the OpenJDK rmic IIOP generator.
+Approaching things this way would also mean one would not need to use
+the RMIC setting.
+(NB: One still need to use the IDLJ setting to use the OpenJDK idlj
+implementation, especially as moving the ibmorbtools.jar file aside also
+eliminates the IBM idlj implementation from the classpath).</em>"
+</p>
+
+<p>
+For historical reasons two old build logs of a debug and a product build
+bootstrapped with the IBM JDK are still available for inspection: <a
+href="http://openjdkpower.osuosl.org/OpenJDK/download/build-logs/output_ppc-aix-port_dbg.log">output_ppc-aix-port_dbg.log</a>,
+<a
+href="http://openjdkpower.osuosl.org/OpenJDK/download/build-logs/output_ppc-aix-port_opt.log">output_ppc-aix-port_opt.log</a>.
+</p>
+
+<h3>Running the OpenJDK Linux/PPC64 port</h3>
+
+<p>
+Running the freshly build VM should give the following output:
+</p>
+
+<pre class="terminal">
+&gt; build/linux-ppc64-debug/bin/java -showversion HelloWorld
+openjdk version "1.7.0-internal"
+OpenJDK Runtime Environment (build 1.7.0-internal-jvmtests_2012_12_16_22_14-b00)
+OpenJDK 64-Bit Server VM (build 23.2-b04, mixed mode)
+
+HelloWorld
+</pre>
+
+<h2>Building on AIX/PPC64</h2>
+
+<p>
+Currently, i.e. all versions after revision <a
+href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b02"><em>ppc-aix-port-b02</em></a>,
+should successfully build and run on AIX. Passing
+<code>CORE_BUILD=true</code> on the build comamnd line will instruct the build
+system to create an interpreter-only version of the VM which is in general about
+an order of magnitude slower than a corresponding server VM with JIT
+compiler. But it is still fully functional (e.g. it passes JVM98) and can even
+be used to bootstrap itself. Starting with
+revision <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/file/ppc-aix-port-b03"><em>ppc-aix-port-b03</em></a>,
+it is possible to build without <code>CORE_BUILD=true</code> and create a
+JIT-enabled version of the VM (containing the C2 "<em>Server</em>" JIT
+compiler).
+</p>
+
+<h3>Building with the OpenJDK AIX/PPC64 port as bootstrap JDK</h3>
+
+<p>
+A precompiled build of <em>ppc-aix-port-b03</em> is available
+for <a href="http://openjdkpower.osuosl.org/OpenJDK/download/bootstrap/openjdk1.7.0-ppc-aix-port-aix-ppc64-b03.tar.bz2">download</a>.
+We recommend using it or a self compiled OpenJDK version for AIX as bootstrap JDK.
+</p>
+
+<h3>Building with the IBM JDK for AIX as bootstrap JDK</h3>
+
+<p>
+It is also possible to build with an <a
+href="http://www.ibm.com/developerworks/java/jdk/aix/service.html#java6">IBM
+JDK 6</a> bootstrap JDK (after all this is how we initially bootstrapped the
+port). But because the IBM JDK uses a different default implementation of the
+<tt>idlj</tt> and <tt>rmic</tt> compilers you will have to rename or
+delete <code>lib/ibmorbtools.jar</code> and add the following additional
+variable to the build command line to force the IBM JDK to fall back to the
+default Sun/Oracle version of the IDLJ compiler (notice that the the single
+quotes are crucial here to prevent the immediate expansion of
+<tt>$(ALT_BOOTDIR)</tt>):
+</p>
+
+<pre class="terminal">
+IDLJ='$(ALT_BOOTDIR)/bin/java -cp $(ALT_BOOTDIR)/lib/tools.jar com.sun.tools.corba.se.idl.toJavaPortable.Compile'
+</pre>
+
+<h3>AIX build dependencies</h3>
+
+<p>
+Our current build system is based on AIX 5.3 in order to produce binaries which
+can be run on any AIX version higher than 5.3. However building on
+newer version of AIX should in general work equally well (from time to time we
+build on AIX 7.1 as well). It should be noticed
+that the current build infrastructure only supports the
+commercial <a href="http://www-01.ibm.com/software/awdtools/xlcpp/">XL
+C/C++</a> compilers from IBM so getting a copy of the XL C/C++ compiler suite
+10.1 (or higher) is the first prerequisite that has to be fulfilled. You also
+need to to have the "AIXwindows Application Development Toolkit for X
+Extensions" (i.e. <code>X11.adt.ext</code>) package installed on your
+system. You can check this by doing:
+</p>
+
+<pre class="terminal">
+&gt; lslpp -l X11.adt.ext
+  Fileset                      Level  State      Description
+  ----------------------------------------------------------------------------
+Path: /usr/lib/objrepos
+  X11.adt.ext                7.1.0.0  COMMITTED  AIXwindows Application
+                                                 Development Toolkit for X
+                                                 Extensions
+</pre>
+
+<p>
+There are several other build dependencies (mostly described in the
+general <a href="http://hg.openjdk.java.net/ppc-aix-port/jdk7u/raw-file/tip/README-builds.html">
+README-builds.html</a> file) which are a little more complicate to fulfill on
+AIX than on Linux platforms, but they are all freely available as described in
+the following section.
+</p>
+
+
+<h4>Mercurial &amp; Python</h4>
+
+<p>
+The first thing to install
+is <a href="http://mercurial.selenic.com">Mercurial</a>. The
+Mercurial <a href=" http://mercurial.selenic.com/wiki/Download">download
+wiki</a> contains a
+special <a href="http://mercurial.selenic.com/wiki/Download#AIX">AIX</a>
+section which links
+to <a href="http://www.lunch.org.uk/wiki/aix_packages">http://www.lunch.org.uk/wiki/aix_packages</a>. The
+site provides various <a href="http://www.lunch.org.uk/aix/rpms">RPM
+packeges</a> for AIX 5.2 and higher. Download and
+install <a href="http://www.lunch.org.uk/aix/rpms/python-2.4.6-1.aix5.2.ppc.rpm">python-2.4.6-1.aix5.2.ppc.rpm</a>
+and <a href="http://www.lunch.org.uk/aix/rpms/mercurial-2.3.1-0.aix5.2.ppc.rpm">mercurial-2.3.1-0.aix5.2.ppc.rpm</a>
+(with <code>rpm -i &lt;package-name&gt;.rpm</code>). All the "free" software
+packages will be installed by default into the <code>/opt/freeware</code>
+subdirectory under AIX which seems to be the equivalent
+to <code>/usr/local</code> on Linux platforms.
+</p>
+
+<p>
+Notice that Python has a lot of dependencies on other freeware packages
+from <code>/opt/freeware</code> and you'll have to download and install them
+first before the installation of Python succeeds. Fortunately these packages can
+be downloaded directly from IBM's
+<a href="http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.html">AIX
+Toolbox for Linux Applications</a> site (if you don't have the RPM package
+manager installed already you'll first have to get
+the <a href="ftp://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/INSTALLP/ppc/rpm.rte">AIX
+installp image for the rpm package manager for POWER</a> and install it with
+the command '<code>installp -qacXgd rpm.rte rpm.rte
+</code>'). On my AIX box, I had to install the following additional packages:
+</p>
+
+<ul>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/bzip2/bzip2-1.0.5-3.aix5.3.ppc.rpm">bzip2-1.0.5-3.aix5.3.ppc.rpm</a></li>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/db/db-3.3.11-4.aix5.1.ppc.rpm">db-3.3.11-4.aix5.1.ppc.rpm</a></li>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gdbm/gdbm-1.8.3-5.aix5.2.ppc.rpm">gdbm-1.8.3-5.aix5.2.ppc.rpm</a></li>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/zlib/zlib-1.2.3-4.aix5.2.ppc.rpm">zlib-1.2.3-4.aix5.2.ppc.rpm</a></li>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/readline/readline-4.3-2.aix5.1.ppc.rpm">readline-4.3-2.aix5.1.ppc.rpm</a></li>
+</ul>
+
+<p>
+Python also requires OpenSSL which is available from the "AIX Toolbox for Linux
+Applications" as well, but only after signing in with a universal IBM user
+ID, which can be obtained for free
+(follow the
+link <a href="http://www.ibm.com/services/forms/preLogin.do?source=aixtbx">AIX
+Toolbox Cryptographic Content</a> on
+the <a href="http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html">IBM
+AIX Toolbox download information</a> page).
+</p>
+
+<h4>GNU Make</h4>
+
+Unfortunately, the GNU Make package available from the "AIX Toolbox for Linux
+Applications" is too old (version 3.80 vs. 3.82) for building OpenJDK so we
+have to build our own one. Fortunately, that's not too hard:
+
+<pre class="terminal">
+&gt; wget http://ftp.gnu.org/gnu/make/make-3.82.tar.gz
+&gt; tar -xzf make-3.82.tar.gz
+&gt; cd make-3.82
+&gt; CC=xlc_r ./configure --prefix=/opt/freeware
+&gt; make
+&gt; make install
+</pre>
+
+
+<h4>Freetype, Cups and friends</h4>
+
+<p>
+Luckily, a sufficiently new version of Freetype is available from the "AIX
+Toolbox for Linux Applications" site as well. We need the Freetype development
+package which itself has dependencies as listed below:
+</p>
+
+<ul>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/freetype2/freetype2-2.3.9-1.aix5.2.ppc.rpm">freetype2-2.3.9-1.aix5.2.ppc.rpm</a></li>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/freetype2/freetype2-devel-2.3.9-1.aix5.2.ppc.rpm">freetype2-devel-2.3.9-1.aix5.2.ppc.rpm</a></li>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/zlib/zlib-devel-1.2.3-4.aix5.2.ppc.rpm">zlib-devel-1.2.3-4.aix5.2.ppc.rpm</a></li>
+  <li><a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/pkg-config/pkg-config-0.19-6.aix5.2.ppc.rpm">pkg-config-0.19-6.aix5.2.ppc.rpm</a></li>
+</ul>
+
+<p>
+Notice that the Freetype package will only install a single archive
+under <code>/opt/freeware/lib/libfreetype.a</code> but that archive contains
+both 32- and 64-bit versions of the <code>libfreetype.so</code> shared library:
+</p>
+
+<pre class="terminal">
+&gt; ar -vt -Xany /opt/freeware/lib/libfreetype.a
+rwxr-xr-x     0/0     966393 Aug 21 01:42 2009 libfreetype.so.6
+rwxr-xr-x     0/0     1048680 Aug 21 01:41 2009 libfreetype.so.6
+</pre>
+
+<p>
+During a 64-bit build, the compiler will "magically" find the right version of
+the shared library from the archive.
+</p>
+
+<p>
+Unfortunately the "AIX Toolbox for Linux Applications" site provides no Cups
+package, so I
+took <a href="ftp://www.oss4aix.org/latest/aix53/cups-devel-1.6.1-1.aix5.3.ppc.rpm">cups-devel-1.6.1-1.aix5.3.ppc.rpm</a>
+from <a href="http://www.perzl.org/aix/">http://www.perzl.org/aix/</a>, another
+great site with precompiled open source software for AIX. The Cups development
+package has a lot of dependencies, but because the OpenJDK build only needs the
+Cups header files it is enough to force the installation of the Cups
+development package with <code>rpm -i --nodeps
+cups-devel-1.6.1-1.aix5.3.ppc.rpm</code>.
+</p>
+
+<p>
+The default AIX <code>tar</code> may give you errors like
+"<code>/usr/bin/tar: arg list too long</code>" during the build
+process so we strongly recommend to install
+the <a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/tar/tar-1.14-2.aix5.1.ppc.rpm">tar-1.14-2.aix5.1.ppc.rpm</a>
+package from IBM's AIX Toolbox for Linux Applications site.
+</p>
+
+<h4>Setting up the <code>PATH</code> and building</h4>
+
+<p>
+If you prepend <code>/opt/freeware/bin</code> to you <code>PATH</code>
+environment variable you should be finally able to start the build with the
+following command line (additionally pass <code>CORE_BUILD=true</code> to build
+an interpreter-only version of the VM):
+</p>
+
+<pre class="terminal">
+make debug_build \
+  ALT_BOOTDIR=/usr/work/openjdk/nb/rs6000_64/last_known_good/output-jdk7u/j2sdk-image \
+  ANT_HOME=/sapmnt/depot/tools/gen/java/OpenSource/Ant/1.8.0 \
+  ALT_FREETYPE_LIB_PATH=/opt/freeware/lib \
+  ALT_FREETYPE_HEADERS_PATH=/opt/freeware/include \
+  ALT_CUPS_HEADERS_PATH=/opt/freeware/include \
+  VERBOSE=true \
+  CC_INTERP=true \
+  OPENJDK=true \
+  HOTSPOT_BUILD_JOBS=8 \
+  PARALLEL_COMPILE_JOBS=8 2>&1 | tee /priv/d046063/OpenJDK/output-ppc-aix-port-debug.log
+</pre>
+
+<p>
+After the build finished successfully the results can be found under
+<tt>./build/aix-ppc64-debug/</tt>. Product and fastdebug versions can be
+build with the make targets <tt>product_build</tt> and
+<tt>fastdebug_build</tt> respectively (the build results will be located under
+<tt>./build/aix-ppc64/</tt> and <tt>./build/aix-ppc64-fastdebug/</tt>). On
+our transitional <a
+href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/index.html">ppc-aix-port
+project page</a> you can find the build logs of our regular nightly makes.
+</p>
+
+<h3>Running the OpenJDK AIX/PPC64 port</h3>
+
+<p>
+Running the freshly build VM should give the following output:
+</p>
+
+<pre class="terminal">
+&gt; build/aix-ppc64-debug/bin/java -showversion HelloWorld
+openjdk version "1.7.0-internal-debug"
+OpenJDK Runtime Environment (build 1.7.0-internal-jvmtests_2012_12_16_23_22-b00)
+OpenJDK 64-Bit Server VM (build 23.2-b04, mixed mode)
+
+HelloWorld
+</pre>
+
+<h4>Fonts and Fontconfig (optional)</h4>
+
+<p>
+If you want to run AWT/Swing applications you have to install
+the <a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/fontconfig/fontconfig-2.4.2-1.aix5.2.ppc.rpm">fontconfig</a>
+package from the "AIX Toolbox for Linux Applications" site as described
+before. You will also have to install at least the "AIXwindows Latin Type1
+Fonts" package (<code>X11.fnt.iso_T1</code>) because Fontconfig
+and the <code>fontconfig.properties</code> file of the OpenJDK currently rely on
+the standard Type1 Postscript fonts. If you want to use other Type 1 or
+TrueType fonts (e.g. <code>X11.fnt.ucs.ttf</code>) you'll probably have to edit
+the
+local <a href="http://www.freedesktop.org/software/fontconfig/fontconfig-user.html">Fontconfig
+configuration file</a> (under <code>/opt/freeware/etc/fonts/local.conf</code>)
+and
+the <a href="http://download.java.net/jdk8/docs/technotes/guides/intl/fontconfig.html"><code>&lt;openjdk-path&gt;/jre/lib/fontconfig.properties</code>
+</a> file of your OpenJDK image.
+</p>
+
+<p>
+Also remember that we currently dynamically link against Freetype (see build
+dependencies above) so if you copy the build results to another AIX machine you
+have to ensure that the new host has at
+least <a href="ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/freetype2/freetype2-2.3.9-1.aix5.2.ppc.rpm">freetype2-2.3.9-1.aix5.2.ppc.rpm</a>
+installed.
+</p>
+
+<h4>Memory requirements</h4>
+
+<p>
+Our VM is currently optimized for server class loads. This means that besides
+the usual Java heap settings which are controlled trough command line options
+the user has to make sure the environment provides reasonable data segment and
+the stack size limits. We recommend setting the stack size limit to 4MB
+(e.g. call '<code>ulimit -s 4000</code>') and the data segment limit to 1GB
+(e.g. call '<code>ulimit -d 1000000</code>'). Higher limits should be OK (the
+current limits can be inspected with '<code>ulimit -a</code>').
+</p>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/bin/hgforest.sh	Fri Nov 28 03:10:16 2014 +0000
@@ -0,0 +1,190 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2009, 2013, 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
+command="$1"
+pull_extra_base="$2"
+
+if [ "" = "$command" ] ; then
+  echo No command to hg supplied!
+  exit 1
+fi
+
+# Clean out the temporary directory that stores the pid files.
+tmp=/tmp/forest.$$
+rm -f -r ${tmp}
+mkdir -p ${tmp}
+
+safe_interrupt () {
+  if [ -d ${tmp} ]; then
+    if [ "`ls ${tmp}/*.pid`" != "" ]; then
+      echo "Waiting for processes ( `cat ${tmp}/*.pid | tr '\n' ' '`) to terminate nicely!"
+      sleep 1
+      # Pipe stderr to dev/null to silence kill, that complains when trying to kill
+      # a subprocess that has already exited.
+      kill -TERM `cat ${tmp}/*.pid | tr '\n' ' '` 2> /dev/null
+      wait
+      echo Interrupt complete!
+    fi
+  fi
+  rm -f -r ${tmp}
+  exit 1
+}
+
+nice_exit () {
+  if [ -d ${tmp} ]; then
+    if [ "`ls ${tmp}`" != "" ]; then
+      wait
+    fi
+  fi
+  rm -f -r ${tmp}
+}
+
+trap 'safe_interrupt' INT QUIT
+trap 'nice_exit' EXIT
+
+# Only look in specific locations for possible forests (avoids long searches)
+pull_default=""
+repos=""
+repos_extra=""
+if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
+  subrepos="corba jaxp jaxws langtools jdk hotspot"
+  if [ -f .hg/hgrc ] ; then
+    pull_default=`hg paths default`
+    if [ "${pull_default}" = "" ] ; then
+      echo "ERROR: Need initial clone with 'hg paths default' defined"
+      exit 1
+    fi
+  fi
+  if [ "${pull_default}" = "" ] ; then
+    echo "ERROR: Need initial repository to use this script"
+    exit 1
+  fi
+  for i in ${subrepos} ; do
+    if [ ! -f ${i}/.hg/hgrc ] ; then
+      repos="${repos} ${i}"
+    fi
+  done
+  if [ "${pull_extra_base}" != "" ] ; then
+    subrepos_extra="jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed deploy install sponsors pubs"
+    pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'`
+    pull_extra="${pull_extra_base}/${pull_default_tail}"
+    for i in ${subrepos_extra} ; do
+      if [ ! -f ${i}/.hg/hgrc ] ; then
+        repos_extra="${repos_extra} ${i}"
+      fi
+    done
+  fi
+  at_a_time=2
+  # Any repos to deal with?
+  if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then
+    exit
+  fi
+else
+  hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null`
+  # Derive repository names from the .hg directory locations
+  for i in ${hgdirs} ; do
+    repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`"
+  done
+  for i in ${repos} ; do
+    if [ -h ${i}/.hg/store/lock -o -f ${i}/.hg/store/lock ] ; then
+      locked="${i} ${locked}"
+    fi
+  done
+  at_a_time=8
+  # Any repos to deal with?
+  if [ "${repos}" = "" ] ; then
+    echo "No repositories to process."
+    exit
+  fi
+  if [ "${locked}" != "" ] ; then
+    echo "These repositories are locked: ${locked}"
+    exit
+  fi
+fi
+
+# Echo out what repositories we do a command on.
+echo "# Repositories: ${repos} ${repos_extra}"
+echo
+
+# Run the supplied command on all repos in parallel.
+n=0
+for i in ${repos} ${repos_extra} ; do
+  n=`expr ${n} '+' 1`
+  repopidfile=`echo ${i} | sed -e 's@./@@' -e 's@/@_@g'`
+  reponame=`echo ${i} | sed -e :a -e 's/^.\{1,20\}$/ &/;ta'`
+  pull_base="${pull_default}"
+  for j in $repos_extra ; do
+      if [ "$i" = "$j" ] ; then
+          pull_base="${pull_extra}"
+      fi
+  done
+  (
+    (
+      if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
+        pull_newrepo="${pull_base}/${i}"
+        # pull_newrepo="`echo ${pull_base}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
+        echo hg clone ${pull_newrepo} ${i}
+        path="`dirname ${i}`"
+        if [ "${path}" != "." ] ; then
+          times=0
+          while [ ! -d "${path}" ]   ## nested repo, ensure containing dir exists
+          do
+            times=`expr ${times} '+' 1`
+            if [ `expr ${times} '%' 10` -eq 0 ] ; then
+              echo ${path} still not created, waiting...
+            fi
+            sleep 5
+          done
+        fi
+        (PYTHONUNBUFFERED=true hg clone ${pull_newrepo} ${i}; echo "$?" > ${tmp}/${repopidfile}.pid.rc )&
+      else
+        echo "cd ${i} && hg $*"
+        cd ${i} && (PYTHONUNBUFFERED=true hg "$@"; echo "$?" > ${tmp}/${repopidfile}.pid.rc )&
+      fi
+      echo $! > ${tmp}/${repopidfile}.pid
+    ) 2>&1 | sed -e "s@^@${reponame}:   @") &
+
+  if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
+    sleep 2
+    echo Waiting 5 secs before spawning next background command.
+    sleep 3
+  fi
+done
+# Wait for all hg commands to complete
+wait
+
+# Terminate with exit 0 only if all subprocesses were successful
+ec=0
+if [ -d ${tmp} ]; then
+  for rc in ${tmp}/*.pid.rc ; do
+    exit_code=`cat ${rc} | tr -d ' \n\r'`
+    if [ "${exit_code}" != "0" ] ; then
+      echo "WARNING: ${rc} exited abnormally."
+      ec=1
+    fi
+  done
+fi
+exit ${ec}
--- a/get_source.sh	Thu Nov 20 09:53:05 2014 -0800
+++ b/get_source.sh	Fri Nov 28 03:10:16 2014 +0000
@@ -26,8 +26,8 @@
 #
 
 # Get clones of all nested repositories
-sh ./make/scripts/hgforest.sh clone $*
+sh ./common/bin/hgforest.sh clone "$@" || exit 1
 
 # Update all existing repositories to the latest sources
-sh ./make/scripts/hgforest.sh pull -u
+sh ./common/bin/hgforest.sh pull -u
 
--- a/make/Defs-internal.gmk	Thu Nov 20 09:53:05 2014 -0800
+++ b/make/Defs-internal.gmk	Fri Nov 28 03:10:16 2014 +0000
@@ -303,6 +303,16 @@
   ABS_JAXWS_DIST = $(JAXWS_OUTPUTDIR)/dist
 endif
 
+# Command to PaX mark the VM
+ifndef PAX_COMMAND
+  PAX_COMMAND = /usr/sbin/paxmark.sh
+endif
+ifeq ($(ARCH), i586)
+  PAX_COMMAND_ARGS="-msp"
+else
+  PAX_COMMAND_ARGS="-m"
+endif
+
 # Common make arguments (supplied to all component builds)
 COMMON_BUILD_ARGUMENTS = \
     JDK_TOPDIR=$(ABS_JDK_TOPDIR) \
@@ -322,7 +332,10 @@
     JDK_MICRO_VERSION=$(JDK_MICRO_VERSION) \
     PREVIOUS_MAJOR_VERSION=$(PREVIOUS_MAJOR_VERSION) \
     PREVIOUS_MINOR_VERSION=$(PREVIOUS_MINOR_VERSION) \
-    PREVIOUS_MICRO_VERSION=$(PREVIOUS_MICRO_VERSION)
+    PREVIOUS_MICRO_VERSION=$(PREVIOUS_MICRO_VERSION) \
+    STATIC_CXX=$(STATIC_CXX) \
+    PAX_COMMAND=$(PAX_COMMAND) \
+    PAX_COMMAND_ARGS=$(PAX_COMMAND_ARGS)
 
 ifdef ARCH_DATA_MODEL
   COMMON_BUILD_ARGUMENTS += ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)
--- a/make/hotspot-rules.gmk	Thu Nov 20 09:53:05 2014 -0800
+++ b/make/hotspot-rules.gmk	Fri Nov 28 03:10:16 2014 +0000
@@ -81,6 +81,10 @@
   endif
 endif
 
+ifeq ($(CORE_BUILD), true)
+  HOTSPOT_TARGET := $(HOTSPOT_TARGET)core
+endif
+
 HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS)
 HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
 HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
@@ -101,6 +105,16 @@
   HOTSPOT_BUILD_ARGUMENTS += FULL_DEBUG_SYMBOLS=$(FULL_DEBUG_SYMBOLS)
 endif
 
+# Propagate HOTSPOT_BUILD_JOBS to the HotSpot make. Alternatively use the value
+# of PARALLEL_COMPILE_JOBS if available and HOTSPOT_BUILD_JOBS was not defined.
+ifdef HOTSPOT_BUILD_JOBS
+  HOTSPOT_BUILD_ARGUMENTS += HOTSPOT_BUILD_JOBS=$(HOTSPOT_BUILD_JOBS)
+else
+  ifdef PARALLEL_COMPILE_JOBS
+    HOTSPOT_BUILD_ARGUMENTS += HOTSPOT_BUILD_JOBS=$(PARALLEL_COMPILE_JOBS)
+  endif
+endif
+
 ifdef ZIP_DEBUGINFO_FILES
   HOTSPOT_BUILD_ARGUMENTS += ZIP_DEBUGINFO_FILES="$(ZIP_DEBUGINFO_FILES)"
 endif
--- a/make/jdk-rules.gmk	Thu Nov 20 09:53:05 2014 -0800
+++ b/make/jdk-rules.gmk	Fri Nov 28 03:10:16 2014 +0000
@@ -80,6 +80,10 @@
   JDK_BUILD_ARGUMENTS += ZIP_DEBUGINFO_FILES="$(ZIP_DEBUGINFO_FILES)"
 endif
 
+# Propagate PARALLEL_COMPILE_JOBS to the JDK make
+ifdef PARALLEL_COMPILE_JOBS
+  JDK_BUILD_ARGUMENTS += PARALLEL_COMPILE_JOBS=$(PARALLEL_COMPILE_JOBS)
+endif
 
 $(JDK_JAVA_EXE):: jdk-build
 
--- a/make/scripts/hgforest.sh	Thu Nov 20 09:53:05 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2009, 2012, 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
-command="$1"
-pull_extra_base="$2"
-
-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=""
-repos=""
-repos_extra=""
-if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
-  subrepos="corba jaxp jaxws langtools jdk hotspot"
-  if [ -f .hg/hgrc ] ; then
-    pull_default=`hg paths default`
-    if [ "${pull_default}" = "" ] ; then
-      echo "ERROR: Need initial clone with 'hg paths default' defined"
-      exit 1
-    fi
-  fi
-  if [ "${pull_default}" = "" ] ; then
-    echo "ERROR: Need initial repository to use this script"
-    exit 1
-  fi
-  for i in ${subrepos} ; do
-    if [ ! -f ${i}/.hg/hgrc ] ; then
-      repos="${repos} ${i}"
-    fi
-  done
-  if [ "${pull_extra_base}" != "" ] ; then
-    subrepos_extra="jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed deploy install sponsors pubs"
-    pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'`
-    pull_extra="${pull_extra_base}/${pull_default_tail}"
-    for i in ${subrepos_extra} ; do
-      if [ ! -f ${i}/.hg/hgrc ] ; then
-        repos_extra="${repos_extra} ${i}"
-      fi
-    done
-  fi
-  at_a_time=2
-  # Any repos to deal with?
-  if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then
-    echo "No repositories to clone."
-    exit
-  fi
-else
-  hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null`
-  # Derive repository names from the .hg directory locations
-  for i in ${hgdirs} ; do
-    repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`"
-  done
-  at_a_time=8
-  # Any repos to deal with?
-  if [ "${repos}" = "" ] ; then
-    echo "No repositories to process."
-    exit
-  fi
-fi
-
-# Echo out what repositories we will clone
-echo "# Repos: ${repos} ${repos_extra}"
-
-# 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 [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
-        pull_newrepo="`echo ${pull_default}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
-        cline="hg clone ${pull_newrepo} ${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
-
-if [ "${repos_extra}" != "" ] ; then
-  for i in ${repos_extra} ; do
-    echo "Starting on ${i}"
-    n=`expr ${n} '+' 1`
-    (
-      (
-          pull_newextrarepo="`echo ${pull_extra}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
-          cline="hg clone ${pull_newextrarepo} ${i}"
-          echo "# ${cline}"
-          ( eval "${cline}" )
-        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
-fi
-
-# Cleanup
-rm -f -r ${tmp}
-
-# Terminate with exit 0 all the time (hard to know when to say "failed")
-exit 0
-