diff options
-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 |