summaryrefslogtreecommitdiff
path: root/src/lj_record.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-09-30 21:55:32 +0200
committerMike Pall <mike>2010-09-30 21:55:32 +0200
commitac76493df113e6e648b03e61c0fa56c5754e832d (patch)
treee79e60ea60be028b1ae10587b80eb5f2aa33857d /src/lj_record.c
parentfce05fd6e18a9b1f032f5c7409e1516214220f3c (diff)
downloadluajit-ac76493df113e6e648b03e61c0fa56c5754e832d.tar.gz
luajit-ac76493df113e6e648b03e61c0fa56c5754e832d.tar.bz2
luajit-ac76493df113e6e648b03e61c0fa56c5754e832d.zip
Specialize bytecode for pairs()/next() iterator. Speedup: 3.5x.
Parser predict pairs/next and emits specialized bytecode. Bytecode is descpecialized at runtime if the prediction was wrong. Store slot index in hidden control var to avoid key lookups.
Diffstat (limited to 'src/lj_record.c')
-rw-r--r--src/lj_record.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lj_record.c b/src/lj_record.c
index 6e396729..4845eeac 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -2477,6 +2477,8 @@ void lj_record_ins(jit_State *J)
2477 break; 2477 break;
2478 } 2478 }
2479 /* fallthrough */ 2479 /* fallthrough */
2480 case BC_ITERN:
2481 case BC_ISNEXT:
2480 case BC_CAT: 2482 case BC_CAT:
2481 case BC_UCLO: 2483 case BC_UCLO:
2482 case BC_FNEW: 2484 case BC_FNEW: