Name: Gary Benson
Member since: 2001-05-31 00:39:54
Last Login: 2008-09-03 07:18:29
Homepage: http://inauspicious.org/
Notes: I work for Red Hat.
Shark, now with 100% bytecode coverage
I did jsr, ret and multianewarray today; Shark now has 100% bytecode coverage.
DaCapo status
I’ve been working on DaCapo for nearly two weeks now, so I took a bit of time out today to figure out where I am with it:
| Status | Detail | Unimplemented bytecodes | |
|---|---|---|---|
| antlr | FAIL | too many open files | jsr (once) |
| bloat | pass | 718149ms | multianewarray (once) |
| chart | pass | 337240ms | |
| eclipse | FAIL | requires deoptimization | |
| fop | pass | 37126ms | |
| hsqldb | pass | 178120ms | |
| jython | FAIL | requires deoptimization | jsr (21 times) |
| luindex | pass | 149362ms | jsr (3 times) |
| lusearch | FAIL | segfault | |
| pmd | pass | 457936ms | jsr (15 times) |
| xalan | pass | 174340ms | jsr (8 times) |
Note that this is a debug build, with no optimization and assertions enabled, so the times are in no way representative.
DaCapo
This past week or so I’ve been trying to get the DaCapo benchmarks running on Shark. It’s a total baptism of fire. ANTLR uses exceptions extensively, so I’ve had to implement exception handling. FOP is multithreaded, so I’ve had to implement slow-path monitor acquisition and release (all of synchronization is now done!) I’ve had to implement safepoints, unresolved field resolution, and unresolved method resolution for invokeinterface. I’ve had to replace the unentered block detection code to cope with the more complex flows introduced by exception handlers. I’ve fixed bugs in the divide-by-zero check, in aload, astore, checkcast and new, and to top it off I implemented lookupswitch for kicks. And I’m only halfway through the set of benchmarks…
Building Shark
For reference, this is how to reproduce my working environment and get a debuggable Shark built:
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm cd llvm ./configure --with-pic --enable-pic make cd .. hg clone http://icedtea.classpath.org/hg/icedtea6 cd icedtea6 curl http://gbenson.net/wp-content/uploads/2008/08/mixtec-hacks.patch | patch -p1 ./autogen.sh LLVM_CONFIG=$(dirname $PWD)/llvm/Debug/bin/llvm-config ./configure --enable-shark make icedtea-against-ecj
After the initial make icedtea-against-ecj you can use make hotspot to rebuild only HotSpot</code>.
Shark 0.03 released
I just updated icedtea6 hg with the latest Shark. The main reason for this release is that Andrew Haley pointed out that the marked-method stuff I was using to differentiate compiled methods and interpreted methods didn’t work on amd64, and while it was possible to make it work there I didn’t like the idea of having something that needs tweaking for each new platform you build on. Now interpreted methods have the same calling convention as compiled ones, which makes the need for differentiation obsolete.
Other new features in this release include support for long, float, and double values, and a massive pile of new bytecodes. Check out the coverage page now, it’s awesome!
gary certified others as follows:
Others have certified gary as follows:
[ Certification disabled because you're not logged in. ]
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!