diff options
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) |