changeset 899:50f2b3cacf77 ppc-aix-port-b03

Updated README to reflect the current status of the project (mainly the availability of a mixed-mode VM on Linux and AIX) Also added an automatically generated TOC which should hopefully make the document more readable.
author simonis
date Mon, 17 Dec 2012 19:09:59 +0100
parents 06179726206f
children baa81e95e8e6
files README-ppc.html
diffstat 1 files changed, 267 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/README-ppc.html	Mon Nov 12 09:30:36 2012 +0100
+++ b/README-ppc.html	Mon Dec 17 19:09:59 2012 +0100
@@ -1,9 +1,10 @@
 <?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"> 
-<head> 
-  <title>OpenJDK PowerPC/AIX Port</title> 
+<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;
@@ -14,19 +15,239 @@
       border-color: darkgray;
       margin: 8px 0px 5px 0px;
       padding: 2px;
-      width: auto; 
-      overflow: auto;  
+      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>
+<body onload="createTOC();">
 
 <h1>OpenJDK PowerPC Port</h1>
 
 <p>
-This file contains some information about the <a href="http://openjdk.java.net/projects/ppc-aix-port">
-OpenJDK PowerPC Port for Linux and AIX</a>. 
+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>
@@ -34,25 +255,35 @@
 <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. While the default build
-currently creates 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, it is still fully functional (e.g. it passes JVM98) and can even be
-used to bootstrap itself. 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).
+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-b01</em> is available
-for <a href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/bootstrap/openjdk1.7.0-ppc-aix-port-linux-ppc64-b01.tar.bz2">download</a>.
+A precompiled build of <em>ppc-aix-port-b03</em> is available
+for <a href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/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:
+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">
@@ -67,7 +298,6 @@
   VERBOSE=true \
   CC_INTERP=true \
   OPENJDK=true \
-  CORE_BUILD=true \
   debug_build 2>&1 | tee build_ppc-aix-port_dbg.log
 </pre>
 
@@ -137,8 +367,8 @@
 <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_07_24_22_30-b00)
-OpenJDK 64-Bit  VM (build 23.2-b04, interpreted mode)
+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>
@@ -148,18 +378,23 @@
 <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. While the default build
-currently creates an interpreter-only version of the VM which is in general about
+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, it is still fully functional (e.g. it passes JVM98) and can even be
-used to bootstrap itself.
+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-b02</em> is available
-for <a href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/bootstrap/openjdk1.7.0-ppc-aix-port-aix-ppc64-b02.tar.bz2">download</a>.
+A precompiled build of <em>ppc-aix-port-b03</em> is available
+for <a href="http://cr.openjdk.java.net/~simonis/ppc-aix-port/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>
 
@@ -200,7 +435,7 @@
 
 <pre class="terminal">
 &gt; lslpp -l X11.adt.ext
-  Fileset                      Level  State      Description         
+  Fileset                      Level  State      Description
   ----------------------------------------------------------------------------
 Path: /usr/lib/objrepos
   X11.adt.ext                7.1.0.0  COMMITTED  AIXwindows Application
@@ -343,7 +578,8 @@
 <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:
+following command line (additionally pass <code>CORE_BUILD=true</code> to build
+an interpreter-only version of the VM):
 </p>
 
 <pre class="terminal">
@@ -356,7 +592,6 @@
   VERBOSE=true \
   CC_INTERP=true \
   OPENJDK=true \
-  CORE_BUILD=true \
   HOTSPOT_BUILD_JOBS=8 \
   PARALLEL_COMPILE_JOBS=8 2>&1 | tee /priv/d046063/OpenJDK/output-ppc-aix-port-debug.log
 </pre>
@@ -381,8 +616,8 @@
 <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-debug-d046063_2012_10_25_12_45-b00)
-OpenJDK 64-Bit  VM (build 23.2-b04-jvmg, interpreted mode)
+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>