I've started now the final changes to switch to variable-sized register
frames. And while I've said that no JIT code will break, this is only
true for correct and well-behaved JIT code.
About a year ago the base-pointer (interpreter->ctx.bp) for register
addressing was introduced and src/jit.c supports offset-based functions
for moving registers from cpu to parrot and v.v.
But this code is obviously only used inside jit/i386. Anyway I can test
JIT only on PPC and x86. 'make testj' on other platforms might already
be broken with rev 9513.
I've committed an intermediate fix for PPC. While it still uses
®_INT(x) and such, these absolute addresses are converted immediately
back to offsets relative to interpreter->ctx.bp and then used as offsets
relative to 'r13', the base pointer at runtime.
Similar fixes can probably be applied to other JIT platforms too.
A simpler way is just to use offsets in the first place.
See also: src/jit.c JIT_USE_OFFS and macros ROFFS_INT(), REG_OFFS_INT(), ...
leo