summaryrefslogtreecommitdiff
path: root/src/lj_record.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-03-21 16:01:44 +0100
committerMike Pall <mike>2010-03-21 16:01:44 +0100
commit51c14bf1c80367ec2645819cbdb93d84524060d2 (patch)
treed78b99e4e2c8736ec32b9b686b142ffd4caa5623 /src/lj_record.c
parent8e20b030ac3cf15b3672fa9b8ce413a595f75e01 (diff)
downloadluajit-51c14bf1c80367ec2645819cbdb93d84524060d2.tar.gz
luajit-51c14bf1c80367ec2645819cbdb93d84524060d2.tar.bz2
luajit-51c14bf1c80367ec2645819cbdb93d84524060d2.zip
Avoid snapshots for returns to known callers.
Diffstat (limited to 'src/lj_record.c')
-rw-r--r--src/lj_record.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_record.c b/src/lj_record.c
index 33272316..54068697 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -575,8 +575,8 @@ static void rec_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults)
575 ptrdiff_t nresults = bc_b(callins) ? (ptrdiff_t)bc_b(callins)-1 :gotresults; 575 ptrdiff_t nresults = bc_b(callins) ? (ptrdiff_t)bc_b(callins)-1 :gotresults;
576 BCReg cbase = bc_a(callins); 576 BCReg cbase = bc_a(callins);
577 GCproto *pt = funcproto(frame_func(frame - (cbase+1))); 577 GCproto *pt = funcproto(frame_func(frame - (cbase+1)));
578 if (J->pt && frame == J->L->base - 1) { 578 if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) {
579 if (J->framedepth == 0 && check_downrec_unroll(J, pt)) { 579 if (check_downrec_unroll(J, pt)) {
580 J->maxslot = (BCReg)(rbase + nresults); 580 J->maxslot = (BCReg)(rbase + nresults);
581 rec_stop(J, J->curtrace); /* Down-recursion. */ 581 rec_stop(J, J->curtrace); /* Down-recursion. */
582 return; 582 return;