Joshua Gatcomb <[EMAIL PROTECTED]> wrote:

> 2.  Almost everything but the most trivial JITed code
> was coredumping.

That's then caused by turning USE_CGP on. Strange. Cygwin gcc must
produce different code then somehow, which breaks things. If you are
using gcc 3.0 or above, -mno-accumulate-outgoing-args must be set.

> I can also produce some JIT debugging if someone
> thinks that will help:

That would be great. ddd is running? docs/jit.pod has some hints for
debugging, as well as docs/debug.pod.

The gory details of JIT_CGP start after:

  #  ifdef JIT_CGP
  ...
  void
  Parrot_jit_begin(Parrot_jit_info_t *jit_info,

So if you can step into (si) that part and step on, you should see,
where it's breaking. The basic scheme (which is documented at that place
too) is: JIT code calls first into core_cgp() to get the C register
frame allocated, and jumps back. Then it executes JITted code, or for
non-JITted functions, it jumps into the CGP core via the %esi register.
Quite simple ;)

> Cheers
> Joshua Gatcomb

leo

Reply via email to