aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_trace.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c
index c1a22518..ad00dc67 100644
--- a/src/lj_trace.c
+++ b/src/lj_trace.c
@@ -775,10 +775,12 @@ int LJ_FASTCALL lj_trace_exit(jit_State *J, void *exptr)
775 pc = exd.pc; 775 pc = exd.pc;
776 cf = cframe_raw(L->cframe); 776 cf = cframe_raw(L->cframe);
777 setcframe_pc(cf, pc); 777 setcframe_pc(cf, pc);
778 if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) 778 if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) {
779 lj_gc_step(L); /* Exited because of GC: drive GC forward. */ 779 if (!(G(L)->hookmask & HOOK_GC))
780 else 780 lj_gc_step(L); /* Exited because of GC: drive GC forward. */
781 } else {
781 trace_hotside(J, pc); 782 trace_hotside(J, pc);
783 }
782 if (bc_op(*pc) == BC_JLOOP) { 784 if (bc_op(*pc) == BC_JLOOP) {
783 BCIns *retpc = &traceref(J, bc_d(*pc))->startins; 785 BCIns *retpc = &traceref(J, bc_d(*pc))->startins;
784 if (bc_isret(bc_op(*retpc))) { 786 if (bc_isret(bc_op(*retpc))) {