diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_dispatch.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lj_dispatch.c b/src/lj_dispatch.c index f795954b..7dc600e8 100644 --- a/src/lj_dispatch.c +++ b/src/lj_dispatch.c | |||
@@ -392,8 +392,12 @@ void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc) | |||
392 | { | 392 | { |
393 | jit_State *J = G2J(g); | 393 | jit_State *J = G2J(g); |
394 | if (J->state != LJ_TRACE_IDLE) { | 394 | if (J->state != LJ_TRACE_IDLE) { |
395 | #ifdef LUA_USE_ASSERT | ||
396 | ptrdiff_t delta = L->top - L->base; | ||
397 | #endif | ||
395 | J->L = L; | 398 | J->L = L; |
396 | lj_trace_ins(J, pc-1); /* The interpreter bytecode PC is offset by 1. */ | 399 | lj_trace_ins(J, pc-1); /* The interpreter bytecode PC is offset by 1. */ |
400 | lua_assert(L->top - L->base == delta); | ||
397 | } | 401 | } |
398 | } | 402 | } |
399 | #endif | 403 | #endif |
@@ -448,8 +452,12 @@ ASMFunction LJ_FASTCALL lj_dispatch_call(lua_State *L, const BCIns *pc) | |||
448 | #if LJ_HASJIT | 452 | #if LJ_HASJIT |
449 | J->L = L; | 453 | J->L = L; |
450 | if ((uintptr_t)pc & 1) { /* Marker for hot call. */ | 454 | if ((uintptr_t)pc & 1) { /* Marker for hot call. */ |
455 | #ifdef LUA_USE_ASSERT | ||
456 | ptrdiff_t delta = L->top - L->base; | ||
457 | #endif | ||
451 | pc = (const BCIns *)((uintptr_t)pc & ~(uintptr_t)1); | 458 | pc = (const BCIns *)((uintptr_t)pc & ~(uintptr_t)1); |
452 | lj_trace_hot(J, pc); | 459 | lj_trace_hot(J, pc); |
460 | lua_assert(L->top - L->base == delta); | ||
453 | goto out; | 461 | goto out; |
454 | } else if (J->state != LJ_TRACE_IDLE && | 462 | } else if (J->state != LJ_TRACE_IDLE && |
455 | !(g->hookmask & (HOOK_GC|HOOK_VMEVENT))) { | 463 | !(g->hookmask & (HOOK_GC|HOOK_VMEVENT))) { |