|
@@ -31,7 +31,8 @@ typedef enum {
|
|
|
} VMEvent;
|
|
|
|
|
|
#ifdef LUAJIT_DISABLE_VMEVENT
|
|
|
-#define lj_vmevent_send(L, ev, args) UNUSED(L)
|
|
|
+#define lj_vmevent_send(L, ev, args) UNUSED(L)
|
|
|
+#define lj_vmevent_send_(L, ev, args, post) UNUSED(L)
|
|
|
#else
|
|
|
#define lj_vmevent_send(L, ev, args) \
|
|
|
if (G(L)->vmevmask & VMEVENT_MASK(LJ_VMEVENT_##ev)) { \
|
|
@@ -41,6 +42,15 @@ typedef enum {
|
|
|
lj_vmevent_call(L, argbase); \
|
|
|
} \
|
|
|
}
|
|
|
+#define lj_vmevent_send_(L, ev, args, post) \
|
|
|
+ if (G(L)->vmevmask & VMEVENT_MASK(LJ_VMEVENT_##ev)) { \
|
|
|
+ ptrdiff_t argbase = lj_vmevent_prepare(L, LJ_VMEVENT_##ev); \
|
|
|
+ if (argbase) { \
|
|
|
+ args \
|
|
|
+ lj_vmevent_call(L, argbase); \
|
|
|
+ post \
|
|
|
+ } \
|
|
|
+ }
|
|
|
|
|
|
LJ_FUNC ptrdiff_t lj_vmevent_prepare(lua_State *L, VMEvent ev);
|
|
|
LJ_FUNC void lj_vmevent_call(lua_State *L, ptrdiff_t argbase);
|