diff options
author | Mike Pall <mike> | 2015-06-10 12:15:28 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2015-06-10 12:15:28 +0200 |
commit | 08e100ec0569766f94a688f3dfd22e6e724f4a80 (patch) | |
tree | 484eb949ee143ba4b2ebee4661fb3072fa73f56a /src | |
parent | c5d262f2d2dea317bf15d07d98fc4ab7e62fe548 (diff) | |
download | luajit-08e100ec0569766f94a688f3dfd22e6e724f4a80.tar.gz luajit-08e100ec0569766f94a688f3dfd22e6e724f4a80.tar.bz2 luajit-08e100ec0569766f94a688f3dfd22e6e724f4a80.zip |
x64/LJ_GC64: Fix ipairs().
Diffstat (limited to 'src')
-rw-r--r-- | src/vm_x64.dasc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/vm_x64.dasc b/src/vm_x64.dasc index 2b1c8d2d..e7e990ae 100644 --- a/src/vm_x64.dasc +++ b/src/vm_x64.dasc | |||
@@ -1435,9 +1435,16 @@ static void build_subroutines(BuildCtx *ctx) | |||
1435 | | jmp ->fff_res2 | 1435 | | jmp ->fff_res2 |
1436 | |2: // Check for empty hash part first. Otherwise call C function. | 1436 | |2: // Check for empty hash part first. Otherwise call C function. |
1437 | | cmp dword TAB:RB->hmask, 0; je ->fff_res0 | 1437 | | cmp dword TAB:RB->hmask, 0; je ->fff_res0 |
1438 | |.if X64WIN | ||
1439 | | mov TMPR, BASE | ||
1440 | | mov CARG2d, RAd | ||
1441 | | mov CARG1, TAB:RB | ||
1442 | | mov RB, TMPR | ||
1443 | |.else | ||
1438 | | mov CARG1, TAB:RB | 1444 | | mov CARG1, TAB:RB |
1439 | | mov RB, BASE // Save BASE. | 1445 | | mov RB, BASE // Save BASE. |
1440 | | mov CARG2d, RAd // Caveat: CARG2 == BASE | 1446 | | mov CARG2d, RAd // Caveat: CARG2 == BASE |
1447 | |.endif | ||
1441 | | call extern lj_tab_getinth // (GCtab *t, int32_t key) | 1448 | | call extern lj_tab_getinth // (GCtab *t, int32_t key) |
1442 | | // cTValue * or NULL returned in eax (RD). | 1449 | | // cTValue * or NULL returned in eax (RD). |
1443 | | mov BASE, RB | 1450 | | mov BASE, RB |