diff options
author | Mike Pall <mike> | 2009-12-30 02:37:57 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2009-12-30 02:37:57 +0100 |
commit | 9de0f53a8db3a4d3fa1951ff08aaab392dc7a584 (patch) | |
tree | ce510093fe7d09073c90afbf18f8d5e3577c3cf3 /src/lj_frame.h | |
parent | 52eb88773e88464cb5cc69b485d742468f66f2a2 (diff) | |
download | luajit-9de0f53a8db3a4d3fa1951ff08aaab392dc7a584.tar.gz luajit-9de0f53a8db3a4d3fa1951ff08aaab392dc7a584.tar.bz2 luajit-9de0f53a8db3a4d3fa1951ff08aaab392dc7a584.zip |
Implement yield from C hooks.
Get number of multiple results from C frame.
Add lj_cont_hook: restores multres and dispatch to static ins.
Can use fastcall for lj_dispatch_ins() now.
Diffstat (limited to 'src/lj_frame.h')
-rw-r--r-- | src/lj_frame.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lj_frame.h b/src/lj_frame.h index 398ec4e5..2704ee40 100644 --- a/src/lj_frame.h +++ b/src/lj_frame.h | |||
@@ -63,6 +63,7 @@ enum { | |||
63 | #define CFRAME_OFS_PREV (13*4) | 63 | #define CFRAME_OFS_PREV (13*4) |
64 | #define CFRAME_OFS_L (12*4) | 64 | #define CFRAME_OFS_L (12*4) |
65 | #define CFRAME_OFS_PC (6*4) | 65 | #define CFRAME_OFS_PC (6*4) |
66 | #define CFRAME_OFS_MULTRES (5*4) | ||
66 | #define CFRAME_SIZE (12*4) | 67 | #define CFRAME_SIZE (12*4) |
67 | #elif LJ_TARGET_X64 | 68 | #elif LJ_TARGET_X64 |
68 | #if _WIN64 | 69 | #if _WIN64 |
@@ -71,6 +72,7 @@ enum { | |||
71 | #define CFRAME_OFS_L (32*4) | 72 | #define CFRAME_OFS_L (32*4) |
72 | #define CFRAME_OFS_ERRF (31*4) | 73 | #define CFRAME_OFS_ERRF (31*4) |
73 | #define CFRAME_OFS_NRES (30*4) | 74 | #define CFRAME_OFS_NRES (30*4) |
75 | #define CFRAME_OFS_MULTRES (29*4) | ||
74 | #define CFRAME_SIZE (14*8) | 76 | #define CFRAME_SIZE (14*8) |
75 | #else | 77 | #else |
76 | #define CFRAME_OFS_PREV (4*8) | 78 | #define CFRAME_OFS_PREV (4*8) |
@@ -78,6 +80,7 @@ enum { | |||
78 | #define CFRAME_OFS_L (4*4) | 80 | #define CFRAME_OFS_L (4*4) |
79 | #define CFRAME_OFS_ERRF (3*4) | 81 | #define CFRAME_OFS_ERRF (3*4) |
80 | #define CFRAME_OFS_NRES (2*4) | 82 | #define CFRAME_OFS_NRES (2*4) |
83 | #define CFRAME_OFS_MULTRES (1*4) | ||
81 | #define CFRAME_SIZE (12*8) | 84 | #define CFRAME_SIZE (12*8) |
82 | #endif | 85 | #endif |
83 | #else | 86 | #else |
@@ -91,6 +94,7 @@ enum { | |||
91 | #define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF)) | 94 | #define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF)) |
92 | #define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES)) | 95 | #define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES)) |
93 | #define cframe_prev(cf) (*(void **)(((char *)(cf))+CFRAME_OFS_PREV)) | 96 | #define cframe_prev(cf) (*(void **)(((char *)(cf))+CFRAME_OFS_PREV)) |
97 | #define cframe_multres(cf) (*(uint32_t *)(((char *)(cf))+CFRAME_OFS_MULTRES)) | ||
94 | #define cframe_L(cf) \ | 98 | #define cframe_L(cf) \ |
95 | (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th) | 99 | (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th) |
96 | #define cframe_pc(cf) \ | 100 | #define cframe_pc(cf) \ |