[kaffe] Cleaner, Better MIPS/Linux Patch against 1.0.7, and issues with CVS tree

Kevin D. Kissell kevink at mips.com
Tue Oct 1 07:39:21 PDT 2002

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

It differs from the patch I posted the other day in two regards.

First, I dropped the change to
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, 

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.


            Kevin K.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kaffe-1.0.7.patch_kevink_021001
Type: application/octet-stream
Size: 6278 bytes
Desc: not available
Url : http://kaffe.org/pipermail/kaffe/attachments/20021001/e1af2778/attachment-0003.obj 

More information about the kaffe mailing list