[kaffe] mips jit3 bug

Kiyo Inaba inaba at src.ricoh.co.jp
Wed Sep 15 18:51:00 PDT 2010

Even we have long silence on the list, someone may continue some effort
to improve kaffe...
For this summer, my SOC (summer of code) was to tackle arm jit3 code.
# Oh, this topic is same as the last summer :-)
Of course, the released version has a workable jit3 code for this arch,
if you think even no 'global registers' are defined ;-<

But while trying to determine why it does not work, I installed qemu for
mips and noticed mips-jit3 also does not work. So actually, I spent long
time to find out why mips code does not work properly.

Still, I can not print 'Hello World' by using the first regression test,
but 'verbosejit' flag (which can be the easiest way to see how many methods
are jit-compiled and executed) tells me so many methods becomes to be able
to be compiled.

I put diff's against official 1.1.8 release (rather than the latest 1.1.9)
on 'http://www.kaffe.org/~inaba/kaffe-1.1.8-0915.patch' and if you are
interested, please see what I did.

There are three fixes I did
1) Trampoline code are modified incorrectly. A guy forgot mips needs
   delayed slot when you call subrouting. I reverted to older version.
2) Conversion routine are modified inproperly. If you need cvtif or
   something, you have to think proper return value register. I reverted
   to older version.
3) When you have exceptions, 'callee saved' registers shall be restored
   from callee method's stack. But original code handles it differently.
   And I have no smarter and generic way to handle this situation for
   the time being, the patched version restored the contents by VERY VERY
   ugly way. I hesitate to put this 'fix' back to the repository and 
   this is the main reason I just let you know on the ML.

Since, 'HelloWorldApp.main' method are jit-compiled by this mod, I hope
we may have only one more bug before we can display the 'Hello World' on
mips with jit3 technology.


More information about the kaffe mailing list