summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2020-12-04 11:16:55 +0100
committerMike Pall <mike>2020-12-04 11:16:55 +0100
commitd67ff15a5cf11dff46fa2288e0c074526548db2b (patch)
treed07cafec22a165d0488b5adc4eaf0fd49e6c7e76 /src
parent7aa3e313a363049bef4a75ad9c75b1dd2adfc3de (diff)
downloadluajit2-d67ff15a5cf11dff46fa2288e0c074526548db2b.tar.gz
x64: Fix __call metamethod return dispatch.
Reported by Igor Munkin.
Diffstat (limited to 'src')
-rw-r--r--src/vm_x86.dasc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/vm_x86.dasc b/src/vm_x86.dasc
index b23d046b..60359bd7 100644
--- a/src/vm_x86.dasc
+++ b/src/vm_x86.dasc
@@ -1246,7 +1246,11 @@ static void build_subroutines(BuildCtx *ctx)
| mov LFUNC:RB, [RA-8]
| add NARGS:RD, 1
| // This is fragile. L->base must not move, KBASE must always be defined.
+ |.if x64
+ | cmp KBASEa, rdx // Continue with CALLT if flag set.
+ |.else
| cmp KBASE, BASE // Continue with CALLT if flag set.
+ |.endif
| je ->BC_CALLT_Z
| mov BASE, RA
| ins_call // Otherwise call resolved metamethod.