diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_gc.c | 6 | ||||
| -rw-r--r-- | src/lj_trace.c | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/lj_gc.c b/src/lj_gc.c index 5c665786..7012dbec 100644 --- a/src/lj_gc.c +++ b/src/lj_gc.c | |||
| @@ -689,12 +689,14 @@ int LJ_FASTCALL lj_gc_step(lua_State *L) | |||
| 689 | } while ((int32_t)lim > 0); | 689 | } while ((int32_t)lim > 0); |
| 690 | if (g->gc.debt < GCSTEPSIZE) { | 690 | if (g->gc.debt < GCSTEPSIZE) { |
| 691 | g->gc.threshold = g->gc.total + GCSTEPSIZE; | 691 | g->gc.threshold = g->gc.total + GCSTEPSIZE; |
| 692 | g->vmstate = ostate; | ||
| 693 | return 1; | ||
| 692 | } else { | 694 | } else { |
| 693 | g->gc.debt -= GCSTEPSIZE; | 695 | g->gc.debt -= GCSTEPSIZE; |
| 694 | g->gc.threshold = g->gc.total; | 696 | g->gc.threshold = g->gc.total; |
| 697 | g->vmstate = ostate; | ||
| 698 | return 0; | ||
| 695 | } | 699 | } |
| 696 | g->vmstate = ostate; | ||
| 697 | return 0; | ||
| 698 | } | 700 | } |
| 699 | 701 | ||
| 700 | /* Ditto, but fix the stack top first. */ | 702 | /* Ditto, but fix the stack top first. */ |
diff --git a/src/lj_trace.c b/src/lj_trace.c index c70fc247..add9da6d 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) | |||
| 778 | setcframe_pc(cf, pc); | 778 | setcframe_pc(cf, pc); |
| 779 | if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) { | 779 | if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) { |
| 780 | if (!(G(L)->hookmask & HOOK_GC)) | 780 | if (!(G(L)->hookmask & HOOK_GC)) |
| 781 | lj_gc_step(L); /* Exited because of GC: drive GC forward. */ | 781 | lj_gc_check(L); /* Exited because of GC: drive GC forward. */ |
| 782 | } else { | 782 | } else { |
| 783 | trace_hotside(J, pc); | 783 | trace_hotside(J, pc); |
| 784 | } | 784 | } |
