summaryrefslogtreecommitdiff
path: root/src/lj_frame.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_frame.h')
-rw-r--r--src/lj_frame.h21
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