diff options
Diffstat (limited to 'src/lj_vmevent.h')
-rw-r--r-- | src/lj_vmevent.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/lj_vmevent.h b/src/lj_vmevent.h index 857e5be5..8a0822f2 100644 --- a/src/lj_vmevent.h +++ b/src/lj_vmevent.h | |||
@@ -31,7 +31,8 @@ typedef enum { | |||
31 | } VMEvent; | 31 | } VMEvent; |
32 | 32 | ||
33 | #ifdef LUAJIT_DISABLE_VMEVENT | 33 | #ifdef LUAJIT_DISABLE_VMEVENT |
34 | #define lj_vmevent_send(L, ev, args) UNUSED(L) | 34 | #define lj_vmevent_send(L, ev, args) UNUSED(L) |
35 | #define lj_vmevent_send_(L, ev, args, post) UNUSED(L) | ||
35 | #else | 36 | #else |
36 | #define lj_vmevent_send(L, ev, args) \ | 37 | #define lj_vmevent_send(L, ev, args) \ |
37 | if (G(L)->vmevmask & VMEVENT_MASK(LJ_VMEVENT_##ev)) { \ | 38 | if (G(L)->vmevmask & VMEVENT_MASK(LJ_VMEVENT_##ev)) { \ |
@@ -41,6 +42,15 @@ typedef enum { | |||
41 | lj_vmevent_call(L, argbase); \ | 42 | lj_vmevent_call(L, argbase); \ |
42 | } \ | 43 | } \ |
43 | } | 44 | } |
45 | #define lj_vmevent_send_(L, ev, args, post) \ | ||
46 | if (G(L)->vmevmask & VMEVENT_MASK(LJ_VMEVENT_##ev)) { \ | ||
47 | ptrdiff_t argbase = lj_vmevent_prepare(L, LJ_VMEVENT_##ev); \ | ||
48 | if (argbase) { \ | ||
49 | args \ | ||
50 | lj_vmevent_call(L, argbase); \ | ||
51 | post \ | ||
52 | } \ | ||
53 | } | ||
44 | 54 | ||
45 | LJ_FUNC ptrdiff_t lj_vmevent_prepare(lua_State *L, VMEvent ev); | 55 | LJ_FUNC ptrdiff_t lj_vmevent_prepare(lua_State *L, VMEvent ev); |
46 | LJ_FUNC void lj_vmevent_call(lua_State *L, ptrdiff_t argbase); | 56 | LJ_FUNC void lj_vmevent_call(lua_State *L, ptrdiff_t argbase); |