Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: src/crankshaft/hydrogen.cc

Issue 2838143003: [stubs] Drop CallApiCallbackStub::call_data_undefined optimization. (Closed)
Patch Set: Fix handler-compiler for remaining archs. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/js-native-context-specialization.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/crankshaft/hydrogen.h" 5 #include "src/crankshaft/hydrogen.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/allocation-site-scopes.h" 10 #include "src/allocation-site-scopes.h"
(...skipping 9084 matching lines...) Expand 10 before | Expand all | Expand 10 after
9095 break; 9095 break;
9096 case CallOptimization::kHolderIsReceiver: 9096 case CallOptimization::kHolderIsReceiver:
9097 holder = receiver; 9097 holder = receiver;
9098 break; 9098 break;
9099 case CallOptimization::kHolderNotFound: 9099 case CallOptimization::kHolderNotFound:
9100 UNREACHABLE(); 9100 UNREACHABLE();
9101 break; 9101 break;
9102 } 9102 }
9103 Handle<CallHandlerInfo> api_call_info = optimization.api_call_info(); 9103 Handle<CallHandlerInfo> api_call_info = optimization.api_call_info();
9104 Handle<Object> call_data_obj(api_call_info->data(), isolate()); 9104 Handle<Object> call_data_obj(api_call_info->data(), isolate());
9105 bool call_data_undefined = call_data_obj->IsUndefined(isolate());
9106 HValue* call_data = Add<HConstant>(call_data_obj); 9105 HValue* call_data = Add<HConstant>(call_data_obj);
9107 ApiFunction fun(v8::ToCData<Address>(api_call_info->callback())); 9106 ApiFunction fun(v8::ToCData<Address>(api_call_info->callback()));
9108 ExternalReference ref = ExternalReference(&fun, 9107 ExternalReference ref = ExternalReference(&fun,
9109 ExternalReference::DIRECT_API_CALL, 9108 ExternalReference::DIRECT_API_CALL,
9110 isolate()); 9109 isolate());
9111 HValue* api_function_address = Add<HConstant>(ExternalReference(ref)); 9110 HValue* api_function_address = Add<HConstant>(ExternalReference(ref));
9112 9111
9113 HValue* op_vals[] = {Add<HConstant>(function), call_data, holder, 9112 HValue* op_vals[] = {Add<HConstant>(function), call_data, holder,
9114 api_function_address}; 9113 api_function_address};
9115 9114
9116 HInstruction* call = nullptr; 9115 HInstruction* call = nullptr;
9117 CHECK(argc <= CallApiCallbackStub::kArgMax); 9116 CHECK(argc <= CallApiCallbackStub::kArgMax);
9118 if (!is_function) { 9117 if (!is_function) {
9119 CallApiCallbackStub stub(isolate(), is_store, call_data_undefined, 9118 CallApiCallbackStub stub(isolate(), is_store,
9120 !optimization.is_constant_call()); 9119 !optimization.is_constant_call());
9121 Handle<Code> code = stub.GetCode(); 9120 Handle<Code> code = stub.GetCode();
9122 HConstant* code_value = Add<HConstant>(code); 9121 HConstant* code_value = Add<HConstant>(code);
9123 call = New<HCallWithDescriptor>( 9122 call = New<HCallWithDescriptor>(
9124 code_value, argc + 1, stub.GetCallInterfaceDescriptor(), 9123 code_value, argc + 1, stub.GetCallInterfaceDescriptor(),
9125 Vector<HValue*>(op_vals, arraysize(op_vals)), syntactic_tail_call_mode); 9124 Vector<HValue*>(op_vals, arraysize(op_vals)), syntactic_tail_call_mode);
9126 } else { 9125 } else {
9127 CallApiCallbackStub stub(isolate(), argc, call_data_undefined, false); 9126 CallApiCallbackStub stub(isolate(), argc, false);
9128 Handle<Code> code = stub.GetCode(); 9127 Handle<Code> code = stub.GetCode();
9129 HConstant* code_value = Add<HConstant>(code); 9128 HConstant* code_value = Add<HConstant>(code);
9130 call = New<HCallWithDescriptor>( 9129 call = New<HCallWithDescriptor>(
9131 code_value, argc + 1, stub.GetCallInterfaceDescriptor(), 9130 code_value, argc + 1, stub.GetCallInterfaceDescriptor(),
9132 Vector<HValue*>(op_vals, arraysize(op_vals)), syntactic_tail_call_mode); 9131 Vector<HValue*>(op_vals, arraysize(op_vals)), syntactic_tail_call_mode);
9133 Drop(1); // Drop function. 9132 Drop(1); // Drop function.
9134 } 9133 }
9135 9134
9136 ast_context()->ReturnInstruction(call, ast_id); 9135 ast_context()->ReturnInstruction(call, ast_id);
9137 return true; 9136 return true;
(...skipping 3607 matching lines...) Expand 10 before | Expand all | Expand 10 after
12745 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 12744 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
12746 } 12745 }
12747 12746
12748 #ifdef DEBUG 12747 #ifdef DEBUG
12749 graph_->Verify(false); // No full verify. 12748 graph_->Verify(false); // No full verify.
12750 #endif 12749 #endif
12751 } 12750 }
12752 12751
12753 } // namespace internal 12752 } // namespace internal
12754 } // namespace v8 12753 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-native-context-specialization.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698