Stephane Peiry <[EMAIL PROTECTED]> wrote:

> While playing with JIT on Suns, I've found out that the following pasm code:

>           set   I1, 2
>    LOOP:  sub   I1, 1
>           if    I1, LOOP
>           print "end\n"
>           end

> never finishes.. that is: parrot -j loop.pasm hangs forever (never printing
> 'end') while the non-jitted "parrot loop.pasm" prints 'end' and finishes
> there as expected.

I don't know suns JIT code nor the assembler syntax, but it seems that
the two subcc lines are broken:

        emitm_subcc_r(NATIVECODE, MAP[1], emitm_g(0), emitm_g(0));

If I understand that correctly it should read:

        emitm_subcc_r(NATIVECODE, MAP[1], MAP[1], emitm_g(0));

(and similar a few lines below) - at least when compared to other code
that uses subcc_r.

> Thanks,
> Stephane

> PS.: placing a 'print I1' within the loop resolves the problem,

That could clear g(0) ...

leo

Reply via email to