summaryrefslogtreecommitdiff
path: root/src/lj_opt_fold.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_opt_fold.c')
-rw-r--r--src/lj_opt_fold.c9
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)
1318LJFOLD(SLOAD any any) 1318LJFOLD(SLOAD any any)
1319LJFOLDF(fwd_sload) 1319LJFOLDF(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
1325LJFOLD(XLOAD KPTR any) 1330LJFOLD(XLOAD KPTR any)