<div>Hi Will,</div><div><br></div><div>Thanks very much for the instructions! I managed to get everything working with two gotchas:</div><div>1) libjvm.so could not be found. I had to set LD_LIBRARY_PATH to its location.</div>
<div>2) Generating BootstrapClasses.s does not work on a machine with 1GB of RAM. It did work on my 12GB work station. We might need to split it into mulitple files.</div><div><br></div><div>Other than that, it worked like a charm! I did see a memory leak, but did not investigate much. I also tried to use a generational GC but hit an MMTk assertion quite soon. I will investigate.</div>
<div><br></div><div>FYI, here are some numbers for the dacapo benchmarks. I can't wait to see JVM_GetClassConstantPool implemented :) And hopefully, it's not as bad as it looks. By the name, it looks like we need to have a common representation of the constant pool between libjava.so and vmkit.</div>
<div><br></div>avrora: 8490 (8103)<div>batik: segfault (java exception)</div><div>eclipse: java exception (java exception)<br>fop: 1792 (java exception)</div><div>h2: java exception (gc error)</div><div>jython: unimplemented JVM_GetClassConstantPool (unimplemented NewWeakGlobalRef)</div>

<div>luindex: 2185 (2135)</div><div>lusearch: 2131 (3683)</div><div>
pmd: 3473 (3526)</div><div>sunflow: 5548 (4671)</div><div>tomcat: unimplemented JVM_GetClassConstantPool (segfault)</div><div>tradebeans: unimplemented JVM_GetClassConstantPool (java exception)</div><div>tradesoap: unimplemented JVM_GetClassConstantPool (java exception)</div>

<div>
xalan: 21728 (2970)</div><div><br></div><div>Nice work!</div><div>Nicolas</div><div><br></div><div><div class="gmail_quote">On Sun, Dec 18, 2011 at 7:55 AM, Will Dietz <span dir="ltr"><<a href="mailto:wdietz2@illinois.edu" target="_blank">wdietz2@illinois.edu</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On Fri, Dec 2, 2011 at 11:54 AM, Nicolas Geoffray<br>
<<a href="mailto:nicolas.geoffray@gmail.com" target="_blank">nicolas.geoffray@gmail.com</a>> wrote:<br>
> Yes, I believe that's possible. Depends if openjdk needs fancy things when<br>
> creating a WeakHashMap.<br>
<br>
</div>How right you were (see commits involving hardcoding the<br>
java.lang.Reference's clinit as to not spawn its own thread....) but<br>
seems to be working fine now :).<br>
<div><br>
> This is great news! Does that mean precompilation and GC work on the openjdk<br>
> port? That's awesome. Can't wait to try it out!<br>
<br>
</div>Precompilation has worked for some time (the speedups it provides<br>
makes it a high priority :)), and I believe the GC works.  It<br>
certainly "mostly" works, but for example the limiting factor in<br>
specjvm2008 presently is that memory isn't being freed when it should,<br>
so I'm running out of memory when trying to do a full run--running<br>
individual benchmarks works much better.  In general the bugs I'm<br>
seeing seem to be more of a "memory not freed" variety not a "memory<br>
freed that shouldn't be", which is some comfort.<br>
<br>
Also, I've almost exclusively tested with the default MarkSweep mmtk<br>
plan, although the others seem to work in much more limited testing.<br>
<br>
As for trying this out yourself, here's a rough guide:<br>
<br>
** Install an OpenJDK JDK6 (not Sun, not JRE, not 1.7).<br>
This should be available in your linux distribution's package manager,<br>
otherwise I've had great success with locally built copies of icedtea6<br>
(what I use for most my testing, actually).<br>
<br>
** Replace the GNU Classpath-related configure arguments with<br>
"--with-classpath-impl=openjdk --with-openjdk-path=$JDK_HOME".<br>
JDK_HOME is in surprisingly different places on different<br>
distributions, but it should contain "bin/javac" as well as a "jre"<br>
subdirectory.  The configure script's checks on the path should tell<br>
you if you've got the right path.<br>
<br>
** "make"<br>
Might want to cross your fingers first :).<br>
<br>
<br>
Some caveats when testing this on the various systems I have access to:<br>
<br>
* When precompiling, in particular building BootstrapClasses.s,<br>
sometimes gcc (at least with 4.4.5 on one particular system) barfs<br>
claiming invalid assembly.  Other versions of gcc build the same<br>
assembly fine, and "make CC=clang CXX=clang++" avoids this as well.<br>
FYI<br>
* Many recent OpenJDK versions seem to work (1.9 and later), although<br>
I've encountered one ("OpenJDK Runtime Environment (IcedTea6 1.9.10)<br>
(rhel-1.40.1.9.10.el6_1-x86_64)" from Scientific Linux 6.1) that has<br>
some dlopen/dlclose issue (of all things) that makes accessing fonts<br>
segfault.  Previous version from same distribution works as does<br>
building from scratch via IcedTea, so I've mostly given up on this.<br>
<br>
The abbreviated version of the above is that "some configurations<br>
don't work" and I don't have a particularly great handle on that due<br>
to lack of time and testing :).  So YMMV.<br>
<br>
If you do get to trying it please let me know how it goes/if you have<br>
problems/etc :).  Once it seems to work well for you, then I can work<br>
towards writing a more formal set of instructions for the website as<br>
you previously mentioned :).<br>
<br>
Good luck and happy holidays! :)<br>
<span><font color="#888888"><br>
~Will<br>
</font></span></blockquote></div><br></div>