x64/LJ_GC64: Fix ipairs().

This commit is contained in:
Mike Pall 2015-06-10 12:15:28 +02:00
parent c5d262f2d2
commit 08e100ec05

View File

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