diff options
author | Mike Pall <mike> | 2011-05-04 21:34:21 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-05-04 21:34:21 +0200 |
commit | b4006ba9a8bf506c98d12f32c182219bb8d9cd4f (patch) | |
tree | 2b8b12b5eca975875fa7a133d5182156191fc1d9 /src | |
parent | 139175f8c48af3ceefb6838dabc0f1222fd150b1 (diff) | |
download | luajit-b4006ba9a8bf506c98d12f32c182219bb8d9cd4f.tar.gz luajit-b4006ba9a8bf506c98d12f32c182219bb8d9cd4f.tar.bz2 luajit-b4006ba9a8bf506c98d12f32c182219bb8d9cd4f.zip |
Fix stack slot updates for down-recursion.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_record.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 41b2221a..472597b6 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -666,7 +666,8 @@ void lj_record_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults) | |||
666 | GCproto *pt = funcproto(frame_func(frame - (cbase+1))); | 666 | GCproto *pt = funcproto(frame_func(frame - (cbase+1))); |
667 | if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) { | 667 | if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) { |
668 | if (check_downrec_unroll(J, pt)) { | 668 | if (check_downrec_unroll(J, pt)) { |
669 | J->maxslot = (BCReg)(rbase + nresults); | 669 | J->maxslot = (BCReg)(rbase + gotresults); |
670 | lj_snap_purge(J); | ||
670 | rec_stop(J, J->cur.traceno); /* Down-recursion. */ | 671 | rec_stop(J, J->cur.traceno); /* Down-recursion. */ |
671 | return; | 672 | return; |
672 | } | 673 | } |