Browse Source

x64/LJ_GC64: Fix ipairs().

Mike Pall 10 years ago
parent
commit
08e100ec05
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/vm_x64.dasc

+ 7 - 0
src/vm_x64.dasc

@@ -1435,9 +1435,16 @@ static void build_subroutines(BuildCtx *ctx)
   |  jmp ->fff_res2
   |2:  // Check for empty hash part first. Otherwise call C function.
   |  cmp dword TAB:RB->hmask, 0; je ->fff_res0
+  |.if X64WIN
+  |  mov TMPR, BASE
+  |  mov CARG2d, RAd
+  |  mov CARG1, TAB:RB
+  |  mov RB, TMPR
+  |.else
   |  mov CARG1, TAB:RB
   |  mov RB, BASE			// Save BASE.
   |  mov CARG2d, RAd			// Caveat: CARG2 == BASE
+  |.endif
   |  call extern lj_tab_getinth		// (GCtab *t, int32_t key)
   |  // cTValue * or NULL returned in eax (RD).
   |  mov BASE, RB