diff options
-rw-r--r-- | src/lj_trace.c | 8 |
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))) { |