Hi All,

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.

Can anybody give me some hints as to what is going on there? :)
Thanks,
Stephane

PS.: placing a 'print I1' within the loop resolves the problem, both jitted
and non jitted finishing properly in that case. Instead 'noop', 'set <some>'
or else within the loop dont help the jitted case and hangs again..
       set   I1, 2
LOOP:  sub   I1, 1
       if    I1, LOOP
       print "end\n"
       end
# -- Sun/SPARC-V9 - Solaris 9

Summary of my parrot 0.0.13 configuration:
  configdate='Sun Feb  8 15:33:49 2004'
  Platform:
    osname=solaris, archname=sun4-solaris
    jitcapable=1, jitarchname=sun4-solaris,
    jitosname=SOLARIS, jitcpuarch=sun4
    execcapable=0
    perl=perl
  Compiler:
    cc='gcc', ccflags=' -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64',
  Linker and Libraries:
    ld='gcc', ldflags=' -L/usr/local/lib ',
    cc_ldflags='',
    libs='-lsocket -lnsl -ldl -lm -lpthread -lrt'
  Dynamic Linking:
    so='.so', ld_shared='-G -L/usr/local/lib',
    ld_shared_flags=''
  Types:
    iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
    ptrsize=4, ptr_alignment=4 byteorder=4321, 
    nv=double, numvalsize=8, doublesize=8

Reply via email to