[kaffe] More JIT3 Questions

Kevin D. Kissell kevink at mips.com
Wed Mar 26 08:54:01 PST 2003

> I'm still fumbling and grepping around, but for the moment it
> certainly looks to me as if whoever wrote the jit3-mips.def
> code is using the higher-level register management code
> inappropriately, with the consequence that there is a lot
> of memory traffic that could be eliminated by the simple
> expedient of reserving 2-3 registers as MIPS/JIT temporaries
> and using those for memory/memory copies, rather than
> sucking the register allocator dry, then performing useless
> spills/reloads.  But, again, I'm still groping/grepping around.

Update: I have successfully fixed the TestNative bug in two
different ways, but I'm still not 100% satisfied.

The first hack was to go into config/mips/jit3-mips.def
and replace  instances of rreg_float and rreg_double
in the pushd_float and push_double code with instances
of rreg_ideal_float and rreg_ideal_double which specify
a floating temp register (f16 in this case).  The second
hack was simply to flag f12 and f14 as Reserved in 
comfig/mips/jit.h.  It may be that the "correct" approach
would be to do something of both - reserving the FP
arguments (and indeed, the integer argument registers)
would seem to be prudent, given that the register allocator
will otherwise trash them between their being set up by
a method prologue and their being passed to an invoked
method, but allocating a new register (or pair of registers)
each time we want to copy values up the stack, such that
we spill data for no good purpose is probably a bad idea

I'll send a patch out at some point, but there are still 4
failing regression tests (even with both the FP and the
integer argument registers "Reserved"), and I'd like to 
nail as many of them as I can before I distribute anything.

            Kevin K.

More information about the kaffe mailing list