From 9d909883474e0079227aed20a50122b5969ed429 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Fri, 22 Nov 2013 05:13:13 +0100 Subject: [PATCH] Follow-up fix for GC step threshold fix. --- src/lj_gc.c | 3 ++- src/lj_trace.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lj_gc.c b/src/lj_gc.c index 2a4d299b..fba932ba 100644 --- a/src/lj_gc.c +++ b/src/lj_gc.c @@ -678,7 +678,8 @@ int LJ_FASTCALL lj_gc_step(lua_State *L) lim = (GCSTEPSIZE/100) * g->gc.stepmul; if (lim == 0) lim = LJ_MAX_MEM; - g->gc.debt += g->gc.total - g->gc.threshold; + if (g->gc.total > g->gc.threshold) + g->gc.debt += g->gc.total - g->gc.threshold; do { lim -= (MSize)gc_onestep(L); if (g->gc.state == GCSpause) { diff --git a/src/lj_trace.c b/src/lj_trace.c index add9da6d..c70fc247 100644 --- a/src/lj_trace.c +++ b/src/lj_trace.c @@ -778,7 +778,7 @@ int LJ_FASTCALL lj_trace_exit(jit_State *J, void *exptr) setcframe_pc(cf, pc); if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) { if (!(G(L)->hookmask & HOOK_GC)) - lj_gc_check(L); /* Exited because of GC: drive GC forward. */ + lj_gc_step(L); /* Exited because of GC: drive GC forward. */ } else { trace_hotside(J, pc); }