aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2017-11-18 12:25:35 +0100
committerMike Pall <mike>2017-11-18 12:25:35 +0100
commitea7071d3c30b6432bfe6f8a9d263e0285cec25e3 (patch)
treeb52517679de0ff0d14d3f1e119bf1b5482d5b7ac /src
parentd417ded17945b4211608d497d50b509e0274f5e0 (diff)
downloadluajit-ea7071d3c30b6432bfe6f8a9d263e0285cec25e3.tar.gz
luajit-ea7071d3c30b6432bfe6f8a9d263e0285cec25e3.tar.bz2
luajit-ea7071d3c30b6432bfe6f8a9d263e0285cec25e3.zip
MIPS64: Fix xpcall() error case.
Thanks to François Perrad and Stefan Pejic.
Diffstat (limited to '')
-rw-r--r--src/vm_mips64.dasc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/vm_mips64.dasc b/src/vm_mips64.dasc
index 75b38dee..a78cd251 100644
--- a/src/vm_mips64.dasc
+++ b/src/vm_mips64.dasc
@@ -1399,15 +1399,16 @@ static void build_subroutines(BuildCtx *ctx)
1399 |. nop 1399 |. nop
1400 | 1400 |
1401 |.ffunc xpcall 1401 |.ffunc xpcall
1402 | daddiu NARGS8:RC, NARGS8:RC, -16 1402 | daddiu NARGS8:TMP0, NARGS8:RC, -16
1403 | ld CARG1, 0(BASE) 1403 | ld CARG1, 0(BASE)
1404 | ld CARG2, 8(BASE) 1404 | ld CARG2, 8(BASE)
1405 | bltz NARGS8:RC, ->fff_fallback 1405 | bltz NARGS8:TMP0, ->fff_fallback
1406 |. lbu TMP1, DISPATCH_GL(hookmask)(DISPATCH) 1406 |. lbu TMP1, DISPATCH_GL(hookmask)(DISPATCH)
1407 | gettp AT, CARG2 1407 | gettp AT, CARG2
1408 | daddiu AT, AT, -LJ_TFUNC 1408 | daddiu AT, AT, -LJ_TFUNC
1409 | bnez AT, ->fff_fallback // Traceback must be a function. 1409 | bnez AT, ->fff_fallback // Traceback must be a function.
1410 |. move TMP2, BASE 1410 |. move TMP2, BASE
1411 | move NARGS8:RC, NARGS8:TMP0
1411 | daddiu BASE, BASE, 24 1412 | daddiu BASE, BASE, 24
1412 | // Remember active hook before pcall. 1413 | // Remember active hook before pcall.
1413 | srl TMP3, TMP3, HOOK_ACTIVE_SHIFT 1414 | srl TMP3, TMP3, HOOK_ACTIVE_SHIFT