Преглед изворни кода

x64: Fix __call metamethod return dispatch.

Reported by Igor Munkin.
Mike Pall пре 4 година
родитељ
комит
d67ff15a5c
1 измењених фајлова са 4 додато и 0 уклоњено
  1. 4 0
      src/vm_x86.dasc

+ 4 - 0
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.