| Index: src/x64/stub-cache-x64.cc
|
| diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc
|
| index 696e5db062fe459eebb480cafd874d0619f47ba1..55e4a9b129556c070cfc8a3e39b1d9f6bc777864 100644
|
| --- a/src/x64/stub-cache-x64.cc
|
| +++ b/src/x64/stub-cache-x64.cc
|
| @@ -493,16 +493,10 @@ static void GenerateFastApiCall(MacroAssembler* masm,
|
|
|
| // Function address is a foreign pointer outside V8's heap.
|
| Address function_address = v8::ToCData<Address>(api_call_info->callback());
|
| - // TODO(dcarney): fix signatures using returns_handle
|
| - const bool returns_handle = false;
|
|
|
| -#if defined(__MINGW64__)
|
| +#if defined(__MINGW64__) || defined(_WIN64)
|
| Register arguments_arg = rcx;
|
| Register callback_arg = rdx;
|
| -#elif defined(_WIN64)
|
| - // Win64 uses first register--rcx--for returned value.
|
| - Register arguments_arg = returns_handle ? rdx : rcx;
|
| - Register callback_arg = returns_handle ? r8 : rdx;
|
| #else
|
| Register arguments_arg = rdi;
|
| Register callback_arg = rsi;
|
| @@ -512,7 +506,7 @@ static void GenerateFastApiCall(MacroAssembler* masm,
|
| // it's not controlled by GC.
|
| const int kApiStackSpace = 4;
|
|
|
| - __ PrepareCallApiFunction(kApiStackSpace, returns_handle);
|
| + __ PrepareCallApiFunction(kApiStackSpace);
|
|
|
| __ movq(StackSpaceOperand(0), rbx); // v8::Arguments::implicit_args_.
|
| __ addq(rbx, Immediate(argc * kPointerSize));
|
| @@ -530,7 +524,6 @@ static void GenerateFastApiCall(MacroAssembler* masm,
|
| thunk_address,
|
| callback_arg,
|
| api_call_argc + 1,
|
| - returns_handle,
|
| kFastApiCallArguments + 1);
|
| }
|
|
|
| @@ -1307,18 +1300,11 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
| // passed as the const ExecutableAccessorInfo& to the C++ callback.
|
|
|
| Address getter_address = v8::ToCData<Address>(callback->getter());
|
| - // TODO(dcarney): fix signatures using returns_handle
|
| - const bool returns_handle = false;
|
|
|
| -#if defined(__MINGW64__)
|
| +#if defined(__MINGW64__) || defined(_WIN64)
|
| Register getter_arg = r8;
|
| Register accessor_info_arg = rdx;
|
| Register name_arg = rcx;
|
| -#elif defined(_WIN64)
|
| - // Win64 uses first register--rcx--for returned value.
|
| - Register getter_arg = returns_handle ? r9 : r8;
|
| - Register accessor_info_arg = returns_handle ? r8 : rdx;
|
| - Register name_arg = returns_handle ? rdx : rcx;
|
| #else
|
| Register getter_arg = rdx;
|
| Register accessor_info_arg = rsi;
|
| @@ -1335,7 +1321,7 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
| // Allocate v8::AccessorInfo in non-GCed stack space.
|
| const int kArgStackSpace = 1;
|
|
|
| - __ PrepareCallApiFunction(kArgStackSpace, returns_handle);
|
| + __ PrepareCallApiFunction(kArgStackSpace);
|
| STATIC_ASSERT(PropertyCallbackArguments::kArgsLength == 6);
|
| __ lea(rax, Operand(name_arg, 6 * kPointerSize));
|
|
|
| @@ -1352,7 +1338,6 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
| thunk_address,
|
| getter_arg,
|
| kStackSpace,
|
| - returns_handle,
|
| 5);
|
| }
|
|
|
|
|