diff options
author | Mike Pall <mike> | 2013-10-15 22:46:39 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2013-10-15 22:46:39 +0200 |
commit | 4fba08a9aca4ce99a6a51f5faca2e1e091ad1422 (patch) | |
tree | 3ff50845d880c04851005a92dcae91ab48cea022 | |
parent | 5d25645a210f32dddecde9c50afb14f9ee63e180 (diff) | |
download | luajit-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.c | 4 |
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. */ |