Ticket #1635 (closed experimental: fixed)
Runloop unrolling for exception handling
Reported by: | NotFound | Owned by: | whiteknight |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | core | Version: | 2.3.0 |
Severity: | medium | Keywords: | |
Cc: | Language: | ||
Patch status: | applied | Platform: |
Description
The attached patch is a proof of concept implementation of a runloop unrolling for exception handling. The idea is that when a exception handler takes care and finishes the handling, it signals that decision and the control return to the runloop that established the handler, unrolling the C stack if needed.
The second attach is an example of use.
For simplicity, this implementation uses a method in the ExceptionHandler PMC. A specific opcode will simplify the usage.
It uses the ExceptionHandler object to identify the runloop, but the 'push_eh label' doesn't provide one. A variant '$P0 = push_eh label' is a possible solution.