Index: src/x64/stub-cache-x64.cc |
=================================================================== |
--- src/x64/stub-cache-x64.cc (revision 11348) |
+++ src/x64/stub-cache-x64.cc (working copy) |
@@ -379,8 +379,7 @@ |
__ push(receiver); |
__ push(holder); |
__ push(FieldOperand(kScratchRegister, InterceptorInfo::kDataOffset)); |
- __ movq(kScratchRegister, ExternalReference::isolate_address()); |
- __ push(kScratchRegister); |
+ __ PushAddress(ExternalReference::isolate_address()); |
} |
@@ -482,7 +481,9 @@ |
// Prepare arguments. |
__ lea(rbx, Operand(rsp, 4 * kPointerSize)); |
-#ifdef _WIN64 |
+#if defined(__MINGW64__) |
+ Register arguments_arg = rcx; |
+#elif defined(_WIN64) |
// Win64 uses first register--rcx--for returned value. |
Register arguments_arg = rdx; |
#else |
@@ -1010,13 +1011,15 @@ |
} else { |
__ Push(Handle<Object>(callback->data())); |
} |
- __ movq(kScratchRegister, ExternalReference::isolate_address()); |
- __ push(kScratchRegister); // isolate |
+ __ PushAddress(ExternalReference::isolate_address()); // isolate |
__ push(name_reg); // name |
// Save a pointer to where we pushed the arguments pointer. |
// This will be passed as the const AccessorInfo& to the C++ callback. |
-#ifdef _WIN64 |
+#if defined(__MINGW64__) |
+ Register accessor_info_arg = rdx; |
+ Register name_arg = rcx; |
+#elif defined(_WIN64) |
// Win64 uses first register--rcx--for returned value. |
Register accessor_info_arg = r8; |
Register name_arg = rdx; |
@@ -1186,8 +1189,7 @@ |
__ push(holder_reg); |
__ Move(holder_reg, callback); |
__ push(FieldOperand(holder_reg, AccessorInfo::kDataOffset)); |
- __ movq(kScratchRegister, ExternalReference::isolate_address()); |
- __ push(kScratchRegister); |
+ __ PushAddress(ExternalReference::isolate_address()); |
__ push(holder_reg); |
__ push(name_reg); |
__ push(scratch2); // restore return address |