aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2017-11-18 12:23:57 +0100
committerMike Pall <mike>2017-11-18 12:23:57 +0100
commitd417ded17945b4211608d497d50b509e0274f5e0 (patch)
tree6edd90f07251a73cc4fe190ecb83bc4d42a462c9 /src
parent734a3fa32c12c031d501df055c88601810f6c666 (diff)
downloadluajit-d417ded17945b4211608d497d50b509e0274f5e0.tar.gz
luajit-d417ded17945b4211608d497d50b509e0274f5e0.tar.bz2
luajit-d417ded17945b4211608d497d50b509e0274f5e0.zip
ARM64: Fix xpcall() error case (really).
Thanks to François Perrad and Stefan Pejic.
Diffstat (limited to 'src')
-rw-r--r--src/vm_arm64.dasc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/vm_arm64.dasc b/src/vm_arm64.dasc
index 241c58a1..c55794a6 100644
--- a/src/vm_arm64.dasc
+++ b/src/vm_arm64.dasc
@@ -1182,7 +1182,7 @@ static void build_subroutines(BuildCtx *ctx)
1182 |.ffunc xpcall 1182 |.ffunc xpcall
1183 | ldp CARG1, CARG2, [BASE] 1183 | ldp CARG1, CARG2, [BASE]
1184 | ldrb TMP0w, GL->hookmask 1184 | ldrb TMP0w, GL->hookmask
1185 | subs NARGS8:RC, NARGS8:RC, #16 1185 | subs NARGS8:TMP1, NARGS8:RC, #16
1186 | blo ->fff_fallback 1186 | blo ->fff_fallback
1187 | mov RB, BASE 1187 | mov RB, BASE
1188 | asr ITYPE, CARG2, #47 1188 | asr ITYPE, CARG2, #47
@@ -1190,6 +1190,7 @@ static void build_subroutines(BuildCtx *ctx)
1190 | cmn ITYPE, #-LJ_TFUNC 1190 | cmn ITYPE, #-LJ_TFUNC
1191 | add PC, TMP0, #24+FRAME_PCALL 1191 | add PC, TMP0, #24+FRAME_PCALL
1192 | bne ->fff_fallback // Traceback must be a function. 1192 | bne ->fff_fallback // Traceback must be a function.
1193 | mov NARGS8:RC, NARGS8:TMP1
1193 | add BASE, BASE, #24 1194 | add BASE, BASE, #24
1194 | stp CARG2, CARG1, [RB] // Swap function and traceback. 1195 | stp CARG2, CARG1, [RB] // Swap function and traceback.
1195 | cbz NARGS8:RC, ->vm_call_dispatch 1196 | cbz NARGS8:RC, ->vm_call_dispatch