I attach an updated patch to kaffe 1.0.7 that works well on MIPS/Linux in *interpreted* mode, i.e. when configured --with-engine=intrp. For those of you who have problems with attachments, I have also put it up on my ftp server at ftp://ftp.paralogos.com/pub/kaffe/mips/kaffe-1.0.7.patch_kevink_021001
It differs from the patch I posted the other day in two regards. First, I dropped the change to kaffe/kaffevm/systems/unix-jthreads/config-jthreads.h. I had modified that file as part of bullet-proofing the definition of SP_OFFSET and FP_OFFSET in the MIPS builds, but in fact there was nothing really broken there and no urgent reason to merge a change to an "architecture independent" file. In my opinion, there's a bunch of architecture and platform-specific #ifdefs in that file that should be replaced with definitions from include files in the config directories, but that's just my old project management reflexes kicking in. Secondly, there was a bug in native methods that was not addressed by the previous patch (or some reason, the TestNative regression test only gets run in 1.0.7 if one does a configuration and build with --enable-debug). Native method support had been broken in two places with respect to floating point parameter passing. One of those is in config/mips/o32-sysdepCallMethod.h, which had some truly ugly code for argument setup which I have restructures/fixed and above all simplified the control flow (it's still attrocious C). The other is, alas, in "architecture independent code", where a macro that is commented to be needed only for MIPS o32 calling sequences wasn't really doing the desired job in kaffe/kaffevm/support.c With these changes, an interpretive MIPS/Linux build passes all 1.0.7 regression tests both with and without debugging enabled. I therefore checked-out a set of the current CVS sources for kaffe, with the intention of being able to provide a patch relative to the archive (to make life easier for the maintainers) and to see if other fixes to the sources made since 1.0.7 solved any of the remaining problems I was seeing with the JIT3 build. Alas, while the resulting kaffe builds and executes a lot of code, there are more, not fewer failures for the JIT regression tests, and even the interpretive build fails quite a few (12 out of 117) tests that it passed in the 1.0.7-derived build, specifically: ThreadInterrupt fails on a detected timeout. UncaughtException hangs indefintely. SoTimeout fails on a detected timeout. KaffeVerifyBug hangs indefinitely. CharArrayReaderTest hangs indefinitely after announcing "test14". LineNumberReaderTest hangs indefinitely after taking 2 legalArgumentExceptionos for buffer sizes in tests 2 and 3, then succeeding tests 4 and 5. BufferedReaderTest hangs indefinitely after taking two IllegalArgumentExceptions for bad read-ahead and buffer sizes. CLTestConc hangs indefinitely CLTestLie hangs indefinitely CatchDeath hangs indefinitely after passing test 1 of 3 SoInterrupt fails on a detected timeout. Where "hangs indefinitely" means that the tests consumed at least 3 minutes of CPU time, sometimes much more, on a 160MHz MIPS 5Kc. With a few notable exceptions, most tests normally complete after about 30 seconds. I hope that these problems aren't unique to MIPS, and that these observations will prove to be helpful in isolating them. I have to set kaffe aside for a bit. The patched 1.0.7 build runs the CVS regression tests just fine, with the proviso that the InnerTest and Reflect from CVS fails because they are expecting different output than the 1.0.7 version, presumably due to a change to the VM/class loader post-1.0.7, and that NoClassDefTest, which does not exist in 1.0.7, fails due to a class not being found that apparently was only introduced to the class libraries post-1.0.7. Given the good behavior of the patched 1.0.7 tree, I would encourage checking the enclosed patches into the CVS archive. There will be more, one of these days, to fix the remaining JIT bugs and merge the Playstation 2 stuff, which is mostly, but not 100%, compatible with mainstream MIPS/Linux support. Regards, Kevin K.
kaffe-1.0.7.patch_kevink_021001
Description: Binary data