diff options
| author | Mike Pall <mike> | 2017-11-18 12:25:35 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2017-11-18 12:25:35 +0100 |
| commit | ea7071d3c30b6432bfe6f8a9d263e0285cec25e3 (patch) | |
| tree | b52517679de0ff0d14d3f1e119bf1b5482d5b7ac | |
| parent | d417ded17945b4211608d497d50b509e0274f5e0 (diff) | |
| download | luajit-ea7071d3c30b6432bfe6f8a9d263e0285cec25e3.tar.gz luajit-ea7071d3c30b6432bfe6f8a9d263e0285cec25e3.tar.bz2 luajit-ea7071d3c30b6432bfe6f8a9d263e0285cec25e3.zip | |
MIPS64: Fix xpcall() error case.
Thanks to François Perrad and Stefan Pejic.
| -rw-r--r-- | src/vm_mips64.dasc | 5 |
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 |
