diff options
author | Mike Pall <mike> | 2010-09-30 21:55:32 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2010-09-30 21:55:32 +0200 |
commit | ac76493df113e6e648b03e61c0fa56c5754e832d (patch) | |
tree | e79e60ea60be028b1ae10587b80eb5f2aa33857d /src/lj_record.c | |
parent | fce05fd6e18a9b1f032f5c7409e1516214220f3c (diff) | |
download | luajit-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.c | 2 |
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: |