[kaffe] mipsel JIT3

Casey Marshall rsdio at metastatic.org
Thu Mar 4 12:02:02 PST 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

>>>>> "Timothy" == Timothy Stack <stack at cs.utah.edu> writes:

>> Hi,
Timothy> hi,

>> I've started hacking around the JIT3 sources, and have found at
>> least the first point of failure: spill() in jit3/register.c is
>> being called in such a way that reginfo[s->regno].ctype is 0,
>> i.e. it's type field is unset. This causes an immediate ABORT
>> because there is (obviously) no way to spill an untyped
>> register. s->regno has always been 12 when this happens, and this
>> is the first time this register is ever spilled.

Timothy> What method is being jitted?  Does the MIPS jitter pass all
Timothy> of the tests in the test/internal directory?

java.lang.Float.toString. I can't seem to get jitBasic to staticly
link, and thusfar all errors appear when kaffe is loading the core
classes.

>> Along the culprit's trail is a call to slotAlias (jit3/machine.c),
>> which increments the reference count of reginfo[12], but leaves the
>> ctype field untouched, so when that register is requested
>> (push_float does this) it will be incorrectly spilled.

Timothy> Hmm, I'm a little concerned that the register set
Timothy> specification (REGISTER_SET in jit.h) is not quite right.
Timothy> Specifically, the regno fields are not unique, but the jitter
Timothy> is using them as an index into reginfo[].  Looking at the
Timothy> other jitters, I see both cases:

Timothy>   The ARM and MIPS ones reuses the regno numbers.  The i386,
Timothy> alpha, m68k, powerpc, and probably a few others use unique
Timothy> numbers.

Timothy> The safest bet is probably to renumber them and make sure any
Timothy> code that outputs floating point does the correct thing.

I tried that (I changed the regno fields to go from 0 to 63) and I get
a bus error. If this really is the solution then there are some other
bugs. With these register infos changed the failure happens at
Float.isNaN(float).

>> So far I can't tell whether or not this is the fault of the
>> mips-specific code, since I can't really get a stack trace far back
>> enough.

Timothy> This isn't really related, but are you using the xdebugging
Timothy> infrastructure (see FAQ/FAQ.xdebugging)?  I've found it quite
Timothy> helpful when working on the jitter.

The GDB I am using isn't entirely functional, and so far everything
I've been using needs to be staticly linked.

- -- 
Casey Marshall || rsdio at metastatic.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.7 <http://mailcrypt.sourceforge.net/>

iD8DBQFAR4regAuWMgRGsWsRAop1AJ9wwa3xaVYQkxLnq4NmeDhcuV9uoACfZCm6
7NkTa4Q7m8D0zYa7UVud3b4=
=FB+j
-----END PGP SIGNATURE-----




More information about the kaffe mailing list