From 204cee2c917f55f288c0b166742e56c134fe578c Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 21 Sep 2021 16:42:35 +0200 Subject: Fix stack allocation after on-trace stack check. --- src/lj_trace.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lj_trace.c b/src/lj_trace.c index 654d157a..1ee00fd5 100644 --- a/src/lj_trace.c +++ b/src/lj_trace.c @@ -452,7 +452,11 @@ static void trace_stop(jit_State *J) lua_assert(J->parent != 0 && J->cur.root != 0); lj_asm_patchexit(J, traceref(J, J->parent), J->exitno, J->cur.mcode); /* Avoid compiling a side trace twice (stack resizing uses parent exit). */ - traceref(J, J->parent)->snap[J->exitno].count = SNAPCOUNT_DONE; + { + SnapShot *snap = &traceref(J, J->parent)->snap[J->exitno]; + snap->count = SNAPCOUNT_DONE; + if (J->cur.topslot > snap->topslot) snap->topslot = J->cur.topslot; + } /* Add to side trace chain in root trace. */ { GCtrace *root = traceref(J, J->cur.root); -- cgit v1.2.1