Am Samstag, 23. September 2006 09:44 schrieb chromatic:
> Tests 14 and 15 in t/examples/shootout.t fail on Linux/PPC because
> jit_set_args_pc does not handle floating point arguments correctly. I
> poked at the code a little bit, but PPC is different enough with its
> relative wealth of registers that I couldn't fix things trivially.
JIT/ppc is lacking almost all the support for FLOATVALs in the argument
passing code. I.e. the error happens during emitting the JIT code.
> (I'm
> not even sure I can debug the problem properly; copying and modifying the
> code from the x86 JIT doesn't do it.)
Register fetching/storing has to be adjusted for PPC. Given that some code is
emitted, debugging it is rather untrivial, yes. Basically:
(gdb) b parrot_build_asm
(gdb) r -Oc -Cj takfp.pir
# at bp #1
(gdb) fin
# gdb spits out return value := jit_info e.g. $1
(gdb) p $1->arena.start # e.g. $2
(gdb) b *$2
(gdb) c
# not at bp #2 := start of JIT code
(gdb) del 2 # delete breakpoint in memory
(gdb) disp /i $pc
(gdb) si
...
> Does this test work correctly on Mac OS X?
Same problem of course.
> -- c
leo