aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2015-01-05 23:39:37 +0100
committerMike Pall <mike>2015-01-05 23:39:37 +0100
commit999f57de83180c4edd928eb9051e58602ba7e20a (patch)
tree3a5b1834e88f22072e7532eb37b1dce3cb264249
parent4d9e8e245a96b2ef30c9ec34ab1c98bca3dcccb8 (diff)
downloadluajit-999f57de83180c4edd928eb9051e58602ba7e20a.tar.gz
luajit-999f57de83180c4edd928eb9051e58602ba7e20a.tar.bz2
luajit-999f57de83180c4edd928eb9051e58602ba7e20a.zip
Fix BC_UCLO/BC_JMP join optimization in Lua parser.
-rw-r--r--src/lj_parse.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lj_parse.c b/src/lj_parse.c
index e8aafba2..5ced1dd8 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -685,10 +685,12 @@ static BCPos bcemit_jmp(FuncState *fs)
685 BCPos j = fs->pc - 1; 685 BCPos j = fs->pc - 1;
686 BCIns *ip = &fs->bcbase[j].ins; 686 BCIns *ip = &fs->bcbase[j].ins;
687 fs->jpc = NO_JMP; 687 fs->jpc = NO_JMP;
688 if ((int32_t)j >= (int32_t)fs->lasttarget && bc_op(*ip) == BC_UCLO) 688 if ((int32_t)j >= (int32_t)fs->lasttarget && bc_op(*ip) == BC_UCLO) {
689 setbc_j(ip, NO_JMP); 689 setbc_j(ip, NO_JMP);
690 else 690 fs->lasttarget = j+1;
691 } else {
691 j = bcemit_AJ(fs, BC_JMP, fs->freereg, NO_JMP); 692 j = bcemit_AJ(fs, BC_JMP, fs->freereg, NO_JMP);
693 }
692 jmp_append(fs, &j, jpc); 694 jmp_append(fs, &j, jpc);
693 return j; 695 return j;
694} 696}