| Index: src/x64/macro-assembler-x64.cc
|
| ===================================================================
|
| --- src/x64/macro-assembler-x64.cc (revision 11348)
|
| +++ src/x64/macro-assembler-x64.cc (working copy)
|
| @@ -150,6 +150,20 @@
|
| }
|
|
|
|
|
| +void MacroAssembler::PushAddress(ExternalReference source) {
|
| + int64_t address = reinterpret_cast<int64_t>(source.address());
|
| + if (is_int32(address) && !Serializer::enabled()) {
|
| + if (emit_debug_code()) {
|
| + movq(kScratchRegister, BitCast<int64_t>(kZapValue), RelocInfo::NONE);
|
| + }
|
| + push(Immediate(static_cast<int32_t>(address)));
|
| + return;
|
| + }
|
| + LoadAddress(kScratchRegister, source);
|
| + push(kScratchRegister);
|
| +}
|
| +
|
| +
|
| void MacroAssembler::LoadRoot(Register destination, Heap::RootListIndex index) {
|
| ASSERT(root_array_available_);
|
| movq(destination, Operand(kRootRegister,
|
| @@ -657,7 +671,7 @@
|
|
|
|
|
| void MacroAssembler::PrepareCallApiFunction(int arg_stack_space) {
|
| -#ifdef _WIN64
|
| +#if defined(_WIN64) && !defined(__MINGW64__)
|
| // We need to prepare a slot for result handle on stack and put
|
| // a pointer to it into 1st arg register.
|
| EnterApiExitFrame(arg_stack_space + 1);
|
| @@ -705,7 +719,7 @@
|
| RelocInfo::RUNTIME_ENTRY);
|
| call(rax);
|
|
|
| -#ifdef _WIN64
|
| +#if defined(_WIN64) && !defined(__MINGW64__)
|
| // rax keeps a pointer to v8::Handle, unpack it.
|
| movq(rax, Operand(rax, 0));
|
| #endif
|
|
|