[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
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.
-------------- 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