Major rewrite of error handling to allow external/internal unwinding.
Make external unwinding the default on x64. It's mandatory on WIN64 due to the abundance of callee-saved regs. Allow piecewise internal frame unwinding and optional cleanup. Store ERRMEM, ERRERR and ERRCPP early and copy down later. Use FRAME_CP for lj_vm_resume. Add lj_vm_unwind_*_eh variants as landing pads for external unwinder. Use fastcall for lj_vm_unwind_*. Can drop r12/r13 saves in POSIX/x64 interpreter now.
This commit is contained in:
@@ -81,7 +81,7 @@ enum {
|
||||
#define CFRAME_OFS_ERRF (3*4)
|
||||
#define CFRAME_OFS_NRES (2*4)
|
||||
#define CFRAME_OFS_MULTRES (1*4)
|
||||
#define CFRAME_SIZE (12*8)
|
||||
#define CFRAME_SIZE (10*8)
|
||||
#endif
|
||||
#else
|
||||
#error "Missing CFRAME_* definitions for this architecture"
|
||||
|
||||
Reference in New Issue
Block a user