I've checked in a first attempt towards resumable exceptions thrown at opcode level. s. t/op/hacks_4 for an example.

As such ops have to be marked as branches, I did extend OpsFile.pm to understand:

restart ADDRESS(resume);

This marks such opcode as branches. s. var.ops: find_lex_p_s.

internal_exception() is replaced by real_exception() which takes 2 more arguments (interpreter, resume_addr). This for now doesn't longjmp to the handler (which it probably should do) but branches directly there by returning the handler address.

Comments welcome,
leo



Reply via email to