diff options
Diffstat (limited to 'src/lj_frame.h')
-rw-r--r-- | src/lj_frame.h | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/lj_frame.h b/src/lj_frame.h index 0bfcb005..c86818e0 100644 --- a/src/lj_frame.h +++ b/src/lj_frame.h | |||
@@ -67,13 +67,13 @@ enum { | |||
67 | #define CFRAME_SIZE (12*4) | 67 | #define CFRAME_SIZE (12*4) |
68 | #elif LJ_TARGET_X64 | 68 | #elif LJ_TARGET_X64 |
69 | #if _WIN64 | 69 | #if _WIN64 |
70 | #define CFRAME_OFS_PREV (17*8) | 70 | #define CFRAME_OFS_PREV (13*8) |
71 | #define CFRAME_OFS_PC (33*4) | 71 | #define CFRAME_OFS_PC (25*4) |
72 | #define CFRAME_OFS_L (32*4) | 72 | #define CFRAME_OFS_L (24*4) |
73 | #define CFRAME_OFS_ERRF (31*4) | 73 | #define CFRAME_OFS_ERRF (23*4) |
74 | #define CFRAME_OFS_NRES (30*4) | 74 | #define CFRAME_OFS_NRES (22*4) |
75 | #define CFRAME_OFS_MULTRES (29*4) | 75 | #define CFRAME_OFS_MULTRES (21*4) |
76 | #define CFRAME_SIZE (14*8) | 76 | #define CFRAME_SIZE (10*8) |
77 | #else | 77 | #else |
78 | #define CFRAME_OFS_PREV (4*8) | 78 | #define CFRAME_OFS_PREV (4*8) |
79 | #define CFRAME_OFS_PC (5*4) | 79 | #define CFRAME_OFS_PC (5*4) |
@@ -88,8 +88,8 @@ enum { | |||
88 | #endif | 88 | #endif |
89 | 89 | ||
90 | #define CFRAME_RESUME 1 | 90 | #define CFRAME_RESUME 1 |
91 | #define CFRAME_CANYIELD ((intptr_t)(CFRAME_RESUME)) | 91 | #define CFRAME_UNWIND_FF 2 /* Only used in unwinder. */ |
92 | #define CFRAME_RAWMASK (~CFRAME_CANYIELD) | 92 | #define CFRAME_RAWMASK (~(intptr_t)(CFRAME_RESUME|CFRAME_UNWIND_FF)) |
93 | 93 | ||
94 | #define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF)) | 94 | #define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF)) |
95 | #define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES)) | 95 | #define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES)) |
@@ -101,7 +101,8 @@ enum { | |||
101 | (mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns)) | 101 | (mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns)) |
102 | #define setcframe_pc(cf, pc) \ | 102 | #define setcframe_pc(cf, pc) \ |
103 | (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc))) | 103 | (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc))) |
104 | #define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_CANYIELD) | 104 | #define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_RESUME) |
105 | #define cframe_unwind_ff(cf) ((intptr_t)(cf) & CFRAME_UNWIND_FF) | ||
105 | #define cframe_raw(cf) ((void *)((intptr_t)(cf) & CFRAME_RAWMASK)) | 106 | #define cframe_raw(cf) ((void *)((intptr_t)(cf) & CFRAME_RAWMASK)) |
106 | #define cframe_Lpc(L) cframe_pc(cframe_raw(L->cframe)) | 107 | #define cframe_Lpc(L) cframe_pc(cframe_raw(L->cframe)) |
107 | 108 | ||