Closed Bug 479301 Opened 15 years ago Closed 6 years ago

ExceptionHandlerTable needs reworking to allow for discarding jitted code

Categories

(Tamarin Graveyard :: Baseline JIT (CodegenLIR), defect)

All
macOS
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX
Future

People

(Reporter: stejohns, Assigned: tharwood)

References

Details

(Whiteboard: wordcode)

Attachments

(1 file, 1 obsolete file)

Lars: "If jitted code is discarded then the exception table it built (overwrote) must be restored to its original pristine state.  This is not currently possible, as far as I know; instead, the original exception data must be kept around.  So we'll likely need to refine the structure we have now - where the word code table is bolted on and the JIT overwrites the abc table - to one where there's the "original" data from which jitting can happen and the jitted data.  The original data might be the word code table, if the jit can be driven from the word code (it needs to be, IMO)."
Assignee: nobody → tharwood
Blocks: 487482
I'm not sure where this exception handling table might be overwritten; I don't see it in the code, and memory watches on the table don't show any overwriting.

Patch makes the ExceptionHandler data structures const, which enforces the desired semantics at the compiler level.
Attachment #376419 - Flags: review?(lhansen)
Previous patch had a new jit-specific exceptions table that looks like cruft, since the old one's not overwritten.  Perhaps this changed when the nanojit replaced the old JIT?
Attachment #376419 - Attachment is obsolete: true
Attachment #376419 - Flags: review?(lhansen)
the MIR jit modified the interpreter exception handling table, but CodegenLIR/nanojit does not.  The exception handler table is the same as for the abc interpreter (addresses are abc addresses)

This is not a bug for the abc/jit hybrid.

This *is* a bug for a wordcode/jit hybrid where both kinds of
code could coexist on the stack at the same time.  (for example if
we jit lazily).  In that case we need choose the right table based on the ExceptionFrame, not just the method.

if jit & wordcode coexist on the stack, we chould just make them both
use one table which contains WC addresses.  The jit doesn't care what kind
of table it uses, it never puts code addresses in the ExceptionHandlerTable.
unblocking the jit cache bug since we aren't planning on a wordcode/jit hybrid at this time.
No longer blocks: 487482
(In reply to comment #2)
> Created an attachment (id=376422) [details]
> C++ level const-ness for exception table, minus new "exceptions" array

Could have sworn I was asked to review this, so r+ if that's still desired.
Target Milestone: --- → Future
Component: Virtual Machine → JIT Compiler (NanoJIT)
Whiteboard: has-patch
Blocks: 595012
Flags: flashplayer-qrb+
Whiteboard: has-patch → wordcode
Blocks: halfmoon
Tamarin isn't maintained anymore. WONTFIX remaining bugs.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: