| Index: src/x64/stub-cache-x64.cc
|
| diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc
|
| index 31f60be565e2de24697de08cca2a78ded9ec27c2..38a36d6c0f742782d4255c12559534f73e9b5d2a 100644
|
| --- a/src/x64/stub-cache-x64.cc
|
| +++ b/src/x64/stub-cache-x64.cc
|
| @@ -29,6 +29,7 @@
|
|
|
| #if V8_TARGET_ARCH_X64
|
|
|
| +#include "arguments.h"
|
| #include "ic-inl.h"
|
| #include "codegen.h"
|
| #include "stub-cache.h"
|
| @@ -371,10 +372,14 @@ static void PushInterceptorArguments(MacroAssembler* masm,
|
| ASSERT(!masm->isolate()->heap()->InNewSpace(*interceptor));
|
| __ Move(kScratchRegister, interceptor);
|
| __ push(kScratchRegister);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kThisIndex == 0);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kDataIndex == -1);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kIsolateIndex == -4);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kHolderIndex == -5);
|
| __ push(receiver);
|
| - __ push(holder);
|
| __ push(FieldOperand(kScratchRegister, InterceptorInfo::kDataOffset));
|
| __ PushAddress(ExternalReference::isolate_address(masm->isolate()));
|
| + __ push(holder);
|
| }
|
|
|
|
|
| @@ -1322,19 +1327,27 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
| ASSERT(!scratch4().is(reg));
|
| __ PopReturnAddressTo(scratch4());
|
|
|
| + STATIC_ASSERT(PropertyCallbackArguments::kThisIndex == 0);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kDataIndex == -1);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kReturnValueOffset == -2);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kReturnValueDefaultValueIndex == -3);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kIsolateIndex == -4);
|
| + STATIC_ASSERT(PropertyCallbackArguments::kHolderIndex == -5);
|
| __ push(receiver()); // receiver
|
| - __ push(reg); // holder
|
| if (heap()->InNewSpace(callback->data())) {
|
| + ASSERT(!scratch1().is(reg));
|
| __ Move(scratch1(), callback);
|
| __ push(FieldOperand(scratch1(),
|
| ExecutableAccessorInfo::kDataOffset)); // data
|
| } else {
|
| __ Push(Handle<Object>(callback->data(), isolate()));
|
| }
|
| + ASSERT(!kScratchRegister.is(reg));
|
| __ LoadRoot(kScratchRegister, Heap::kUndefinedValueRootIndex);
|
| __ push(kScratchRegister); // return value
|
| __ push(kScratchRegister); // return value default
|
| __ PushAddress(ExternalReference::isolate_address(isolate()));
|
| + __ push(reg); // holder
|
| __ push(name()); // name
|
| // Save a pointer to where we pushed the arguments pointer. This will be
|
| // passed as the const ExecutableAccessorInfo& to the C++ callback.
|
| @@ -1378,7 +1391,7 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
| thunk_address,
|
| getter_arg,
|
| kStackSpace,
|
| - 5);
|
| + 6);
|
| }
|
|
|
|
|
|
|