Merge branch 'master' into v2.1

This commit is contained in:
Mike Pall 2013-11-05 19:41:21 +01:00
commit 5c55b766bd
2 changed files with 5 additions and 3 deletions

View File

@ -684,13 +684,15 @@ int LJ_FASTCALL lj_gc_step(lua_State *L)
} while ((int32_t)lim > 0); } while ((int32_t)lim > 0);
if (g->gc.debt < GCSTEPSIZE) { if (g->gc.debt < GCSTEPSIZE) {
g->gc.threshold = g->gc.total + GCSTEPSIZE; g->gc.threshold = g->gc.total + GCSTEPSIZE;
g->vmstate = ostate;
return 1;
} else { } else {
g->gc.debt -= GCSTEPSIZE; g->gc.debt -= GCSTEPSIZE;
g->gc.threshold = g->gc.total; g->gc.threshold = g->gc.total;
}
g->vmstate = ostate; g->vmstate = ostate;
return 0; return 0;
} }
}
/* Ditto, but fix the stack top first. */ /* Ditto, but fix the stack top first. */
void LJ_FASTCALL lj_gc_step_fixtop(lua_State *L) void LJ_FASTCALL lj_gc_step_fixtop(lua_State *L)

View File

@ -781,7 +781,7 @@ int LJ_FASTCALL lj_trace_exit(jit_State *J, void *exptr)
/* Just exit to interpreter. */ /* Just exit to interpreter. */
} else if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) { } else if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) {
if (!(G(L)->hookmask & HOOK_GC)) if (!(G(L)->hookmask & HOOK_GC))
lj_gc_step(L); /* Exited because of GC: drive GC forward. */ lj_gc_check(L); /* Exited because of GC: drive GC forward. */
} else { } else {
trace_hotside(J, pc); trace_hotside(J, pc);
} }