diff options
author | Mike Pall <mike> | 2010-03-21 16:01:44 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-03-21 16:01:44 +0100 |
commit | 51c14bf1c80367ec2645819cbdb93d84524060d2 (patch) | |
tree | d78b99e4e2c8736ec32b9b686b142ffd4caa5623 /src/lj_record.c | |
parent | 8e20b030ac3cf15b3672fa9b8ce413a595f75e01 (diff) | |
download | luajit-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.c | 4 |
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; |