diff options
author | Mike Pall <mike> | 2010-09-13 01:17:38 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2010-09-13 01:17:38 +0200 |
commit | 847b9cf2534233198e0229c209ab4c4040f5166e (patch) | |
tree | 8e07f98f6624029a26979bade9e6b1a618bb7a89 /src/lj_opt_fold.c | |
parent | e32f7d96c1de48e7c425d1e091f9f406d6a6b1d3 (diff) | |
download | luajit-847b9cf2534233198e0229c209ab4c4040f5166e.tar.gz luajit-847b9cf2534233198e0229c209ab4c4040f5166e.tar.bz2 luajit-847b9cf2534233198e0229c209ab4c4040f5166e.zip |
Record vararg expressions with varargs defined off-trace.
Add SLOAD variant to access the frame type/size.
Diffstat (limited to 'src/lj_opt_fold.c')
-rw-r--r-- | src/lj_opt_fold.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 312c9cf0..90520d8c 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
@@ -1318,8 +1318,13 @@ LJFOLDX(lj_opt_fwd_fload) | |||
1318 | LJFOLD(SLOAD any any) | 1318 | LJFOLD(SLOAD any any) |
1319 | LJFOLDF(fwd_sload) | 1319 | LJFOLDF(fwd_sload) |
1320 | { | 1320 | { |
1321 | lua_assert(J->slot[fins->op1] != 0); | 1321 | if ((fins->op2 & IRSLOAD_FRAME)) { |
1322 | return J->slot[fins->op1]; | 1322 | TRef tr = lj_opt_cse(J); |
1323 | return tref_ref(tr) < J->chain[IR_RETF] ? EMITFOLD : tr; | ||
1324 | } else { | ||
1325 | lua_assert(J->slot[fins->op1] != 0); | ||
1326 | return J->slot[fins->op1]; | ||
1327 | } | ||
1323 | } | 1328 | } |
1324 | 1329 | ||
1325 | LJFOLD(XLOAD KPTR any) | 1330 | LJFOLD(XLOAD KPTR any) |