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 | |
| parent | c5d262f2d2dea317bf15d07d98fc4ab7e62fe548 (diff) | |
| download | luajit-08e100ec0569766f94a688f3dfd22e6e724f4a80.tar.gz luajit-08e100ec0569766f94a688f3dfd22e6e724f4a80.tar.bz2 luajit-08e100ec0569766f94a688f3dfd22e6e724f4a80.zip | |
x64/LJ_GC64: Fix ipairs().
| -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 |
