develooper Front page | perl.perl6.internals | Postings from November 2002

Quick note on JIT bits

Thread Next
From:
Dan Sugalski
Date:
November 13, 2002 12:22
Subject:
Quick note on JIT bits
Message ID:
a05200f05b9f86159d071@[63.120.19.221]
I'm about to do exceptions, and as such I wanted to give a quick 
warning to everyone who does Odd Things. (Which would be in the JIT, 
mainly :)

Because of the way exceptions are going to work, we need to make sure 
that the code emitted for each individual opcode is self-contained, 
relative to the system stack. That is to say, when an opcode is done 
it can't leave any cruft on the system stack, and it shouldn't expect 
there to be any information on the system stack.

The exception system's going to be based on setjmp/longjmp[*], with a 
setjmp done just before entering the runloop, and longjmps done when 
an exception is thrown. The low-level exception handler will then 
unwind the interpreter stacks until it finds an exception handler, at 
which point it'll enter the runloop at the point the exception 
handler dictates. (The point that the parrot-level exception system 
noted that it was supposed to resume at)

This'll generally mean that the system stack'll be pretty mushed, and 
the runloop code won't have any guarantees as to what's on the stack, 
but execution must continue properly from that point on. So recursive 
calls to parrot functions can't recursively use the system stack or 
anything, as that'll get unwound by the low-level exception scheme 
and Bad Things Will Happen. And we wouldn't want that...

[*] Well, their signal-safe equivalents at least
-- 
                                         Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
dan@sidhe.org                         have teddy bears and even
                                       teddy bears get drunk

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About