x64: Fix __call metamethod return dispatch.

Reported by Igor Munkin.
This commit is contained in:
Mike Pall 2020-12-04 11:16:55 +01:00
parent 7aa3e313a3
commit d67ff15a5c

View File

@ -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.