[kaffe] JIT and JIT3 Floating Point failures on m68k platform

Tony Wyatt Tony Wyatt <wyattaw@optushome.com.au>
Mon May 19 04:47:01 2003


Hi all,

I'm trying to fix the floating point failures on the Amiga hardware - both
under AmigaOS and under native Linux. The problem is that the JIT engines do
not generate the correct floating point constants in the Constants Pool of
the .class file. The translated Method code and the rest of the .class file 
appears to be correct.

For instance, the file "test/regression/DoublePrint.java" or any similar
test prog assigns the value "Float.NaN" to a float variable. However, the
value entered into the Constants Pool (and output to the .class file) is
0x3f400000, rather than the 0x7fc00000 that it should be. The actual value
(0x3f400000) equates to a value of 0.75.

When the compiled class is executed (by the JIT or the interpreter), the
"NaN" value is correctly printed out as "0.75" (it expects "NaN").

Now my question is - where (by which function) is the value "Float.Nan"
evaluated during the compilation of a .java file by the JIT engine? I have
now been looking for some days without finding which function is to blame.

Or is it all performed in kjc? Needless to say, I am using the default kjc.jar
as compiler. But something somewhere is giving different behaviour for
interpreter and JIT.

thanks

tony