| Index: src/ic/x64/handler-compiler-x64.cc
|
| diff --git a/src/ic/x64/handler-compiler-x64.cc b/src/ic/x64/handler-compiler-x64.cc
|
| index 12a60034484ce7e7cb32384cdb930dfe1a876bf4..f8d2776df21f2a0df1983c320417c692190ef514 100644
|
| --- a/src/ic/x64/handler-compiler-x64.cc
|
| +++ b/src/ic/x64/handler-compiler-x64.cc
|
| @@ -150,10 +150,10 @@ void PropertyHandlerCompiler::GenerateApiAccessorCall(
|
|
|
| // Abi for CallApiFunctionStub.
|
| Register callee = rdi;
|
| - Register call_data = rbx;
|
| + Register data = rbx;
|
| Register holder = rcx;
|
| Register api_function_address = rdx;
|
| - Register scratch = rax; // scratch_in is no longer valid.
|
| + scratch_in = no_reg;
|
|
|
| // Put callee in place.
|
| __ LoadAccessor(callee, accessor_holder, accessor_index,
|
| @@ -177,18 +177,16 @@ void PropertyHandlerCompiler::GenerateApiAccessorCall(
|
|
|
| Isolate* isolate = masm->isolate();
|
| Handle<CallHandlerInfo> api_call_info = optimization.api_call_info();
|
| - Handle<Object> call_data_obj(api_call_info->data(), isolate);
|
| -
|
| bool call_data_undefined = false;
|
| - // Put call_data in place.
|
| - if (isolate->heap()->InNewSpace(*call_data_obj)) {
|
| - __ Move(scratch, api_call_info);
|
| - __ movp(call_data, FieldOperand(scratch, CallHandlerInfo::kDataOffset));
|
| - } else if (call_data_obj->IsUndefined()) {
|
| + // Put call data in place.
|
| + if (api_call_info->data()->IsUndefined()) {
|
| call_data_undefined = true;
|
| - __ LoadRoot(call_data, Heap::kUndefinedValueRootIndex);
|
| + __ LoadRoot(data, Heap::kUndefinedValueRootIndex);
|
| } else {
|
| - __ Move(call_data, call_data_obj);
|
| + __ movp(data, FieldOperand(callee, JSFunction::kSharedFunctionInfoOffset));
|
| + __ movp(data, FieldOperand(data, SharedFunctionInfo::kFunctionDataOffset));
|
| + __ movp(data, FieldOperand(data, FunctionTemplateInfo::kCallCodeOffset));
|
| + __ movp(data, FieldOperand(data, CallHandlerInfo::kDataOffset));
|
| }
|
|
|
| // Put api_function_address in place.
|
|
|