aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-10-15 22:46:39 +0200
committerMike Pall <mike>2013-10-15 22:46:39 +0200
commit4fba08a9aca4ce99a6a51f5faca2e1e091ad1422 (patch)
tree3ff50845d880c04851005a92dcae91ab48cea022
parent5d25645a210f32dddecde9c50afb14f9ee63e180 (diff)
downloadluajit-4fba08a9aca4ce99a6a51f5faca2e1e091ad1422.tar.gz
luajit-4fba08a9aca4ce99a6a51f5faca2e1e091ad1422.tar.bz2
luajit-4fba08a9aca4ce99a6a51f5faca2e1e091ad1422.zip
Fix line number for relocated bytecode after closure fixup.
-rw-r--r--src/lj_parse.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lj_parse.c b/src/lj_parse.c
index 7ff7d728..882399c7 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -1555,7 +1555,9 @@ static void fs_fixup_ret(FuncState *fs)
1555 switch (bc_op(ins)) { 1555 switch (bc_op(ins)) {
1556 case BC_CALLMT: case BC_CALLT: 1556 case BC_CALLMT: case BC_CALLT:
1557 case BC_RETM: case BC_RET: case BC_RET0: case BC_RET1: 1557 case BC_RETM: case BC_RET: case BC_RET0: case BC_RET1:
1558 offset = bcemit_INS(fs, ins)-(pc+1)+BCBIAS_J; /* Copy return ins. */ 1558 offset = bcemit_INS(fs, ins); /* Copy original instruction. */
1559 fs->bcbase[offset].line = fs->bcbase[pc].line;
1560 offset = offset-(pc+1)+BCBIAS_J;
1559 if (offset > BCMAX_D) 1561 if (offset > BCMAX_D)
1560 err_syntax(fs->ls, LJ_ERR_XFIXUP); 1562 err_syntax(fs->ls, LJ_ERR_XFIXUP);
1561 /* Replace with UCLO plus branch. */ 1563 /* Replace with UCLO plus branch. */