diff options
author | Mike Pall <mike> | 2010-01-28 04:20:20 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-01-28 04:20:20 +0100 |
commit | 2ed0bb7f1edd189f8af9a5420be9b0718eadcbd5 (patch) | |
tree | e244d938bc4b4f60cd4779b4d41c6ad9b3e8ecc7 /src | |
parent | a6565d21fa56756cf4ecb1aec3da38d4cd23b9f1 (diff) | |
download | luajit-2ed0bb7f1edd189f8af9a5420be9b0718eadcbd5.tar.gz luajit-2ed0bb7f1edd189f8af9a5420be9b0718eadcbd5.tar.bz2 luajit-2ed0bb7f1edd189f8af9a5420be9b0718eadcbd5.zip |
Drop obsolete frame shrinking after continuation return.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_record.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index b7832752..f24c287d 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1529,13 +1529,10 @@ static void rec_ret(jit_State *J, BCReg rbase, int gotresults) | |||
1529 | J->base -= cbase+1; | 1529 | J->base -= cbase+1; |
1530 | } else if (frame_iscont(frame)) { | 1530 | } else if (frame_iscont(frame)) { |
1531 | ASMFunction cont = frame_contf(frame); | 1531 | ASMFunction cont = frame_contf(frame); |
1532 | BCReg i, cbase = (BCReg)frame_delta(frame); | 1532 | BCReg cbase = (BCReg)frame_delta(frame); |
1533 | J->pc = frame_contpc(frame)-1; | 1533 | J->pc = frame_contpc(frame)-1; |
1534 | J->baseslot -= (BCReg)cbase; | 1534 | J->baseslot -= (BCReg)cbase; |
1535 | J->base -= cbase; | 1535 | J->base -= cbase; |
1536 | /* Shrink maxslot as much as possible after return from continuation. */ | ||
1537 | for (i = cbase-2; i > 0 && J->base[i] == 0; i--) ; | ||
1538 | J->maxslot = i; | ||
1539 | if (cont == lj_cont_ra) { | 1536 | if (cont == lj_cont_ra) { |
1540 | /* Copy result to destination slot. */ | 1537 | /* Copy result to destination slot. */ |
1541 | BCReg dst = bc_a(*J->pc); | 1538 | BCReg dst = bc_a(*J->pc); |