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

Unified Diff: src/crankshaft/hydrogen.cc

Issue 1728423002: [crankshaft] Remove useless HCallJSFunction instruction. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@remove-dynamic-frame-alignment
Patch Set: Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/crankshaft/hydrogen.h ('k') | src/crankshaft/hydrogen-instructions.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/crankshaft/hydrogen.cc
diff --git a/src/crankshaft/hydrogen.cc b/src/crankshaft/hydrogen.cc
index e6cee763dc5eb4d4dabc9341452f5bc94ac73bea..e447862f147502f6220e5946820ff1f5628799aa 100644
--- a/src/crankshaft/hydrogen.cc
+++ b/src/crankshaft/hydrogen.cc
@@ -6589,8 +6589,8 @@ HValue* HOptimizedGraphBuilder::BuildMonomorphicAccess(
Bailout(kInliningBailedOut);
return nullptr;
}
- return BuildCallConstantFunction(Handle<JSFunction>::cast(info->accessor()),
- argument_count);
+ return NewCallConstantFunction(Handle<JSFunction>::cast(info->accessor()),
+ argument_count);
}
DCHECK(info->IsDataConstant());
@@ -7988,28 +7988,6 @@ void HOptimizedGraphBuilder::AddCheckPrototypeMaps(Handle<JSObject> holder,
}
}
-HInstruction* HOptimizedGraphBuilder::NewPlainFunctionCall(HValue* function,
- int argument_count) {
- return New<HCallJSFunction>(function, argument_count);
-}
-
-HInstruction* HOptimizedGraphBuilder::NewArgumentAdaptorCall(
- HValue* function, int argument_count, HValue* expected_param_count) {
- HValue* context = Add<HLoadNamedField>(
- function, nullptr, HObjectAccess::ForFunctionContextPointer());
- HValue* new_target = graph()->GetConstantUndefined();
- HValue* arity = Add<HConstant>(argument_count - 1);
-
- HValue* op_vals[] = {context, function, new_target, arity,
- expected_param_count};
-
- Callable callable = CodeFactory::ArgumentAdaptor(isolate());
- HConstant* stub = Add<HConstant>(callable.code());
-
- return New<HCallWithDescriptor>(stub, argument_count, callable.descriptor(),
- Vector<HValue*>(op_vals, arraysize(op_vals)));
-}
-
HInstruction* HOptimizedGraphBuilder::NewCallFunction(
HValue* function, int argument_count, ConvertReceiverMode convert_mode) {
HValue* arity = Add<HConstant>(argument_count - 1);
@@ -8041,27 +8019,10 @@ HInstruction* HOptimizedGraphBuilder::NewCallFunctionViaIC(
Vector<HValue*>(op_vals, arraysize(op_vals)));
}
-HInstruction* HOptimizedGraphBuilder::BuildCallConstantFunction(
- Handle<JSFunction> jsfun, int argument_count) {
- HValue* target = Add<HConstant>(jsfun);
- // For constant functions, we try to avoid calling the
- // argument adaptor and instead call the function directly
- int formal_parameter_count =
- jsfun->shared()->internal_formal_parameter_count();
- bool dont_adapt_arguments =
- (formal_parameter_count ==
- SharedFunctionInfo::kDontAdaptArgumentsSentinel);
- int arity = argument_count - 1;
- bool can_invoke_directly =
- dont_adapt_arguments || formal_parameter_count == arity;
- if (can_invoke_directly) {
- return NewPlainFunctionCall(target, argument_count);
- } else {
- HValue* param_count_value = Add<HConstant>(formal_parameter_count);
- return NewArgumentAdaptorCall(target, argument_count, param_count_value);
- }
- UNREACHABLE();
- return NULL;
+HInstruction* HOptimizedGraphBuilder::NewCallConstantFunction(
+ Handle<JSFunction> function, int argument_count) {
+ HValue* target = Add<HConstant>(function);
+ return New<HInvokeFunction>(target, function, argument_count);
}
@@ -8210,7 +8171,7 @@ void HOptimizedGraphBuilder::HandlePolymorphicCallNamed(Call* expr,
needs_wrapping
? NewCallFunction(function, argument_count,
ConvertReceiverMode::kNotNullOrUndefined)
- : BuildCallConstantFunction(target, argument_count);
+ : NewCallConstantFunction(target, argument_count);
PushArgumentsFromEnvironment(argument_count);
AddInstruction(call);
Drop(1); // Drop the function.
@@ -9029,7 +8990,7 @@ bool HOptimizedGraphBuilder::TryInlineBuiltinMethodCall(
Drop(args_count_no_receiver);
HValue* receiver = Pop();
- HValue* function = Pop();
+ Drop(1); // Function.
HValue* result;
{
@@ -9105,7 +9066,7 @@ bool HOptimizedGraphBuilder::TryInlineBuiltinMethodCall(
if_inline.Else();
{
Add<HPushArguments>(receiver);
- result = Add<HCallJSFunction>(function, 1);
+ result = AddInstruction(NewCallConstantFunction(function, 1));
if (!ast_context()->IsEffect()) Push(result);
}
if_inline.End();
@@ -9782,7 +9743,7 @@ void HOptimizedGraphBuilder::VisitCall(Call* expr) {
} else if (TryInlineCall(expr)) {
return;
} else {
- call = BuildCallConstantFunction(known_function, argument_count);
+ call = NewCallConstantFunction(known_function, argument_count);
}
} else {
@@ -9849,7 +9810,7 @@ void HOptimizedGraphBuilder::VisitCall(Call* expr) {
if (TryInlineCall(expr)) return;
PushArgumentsFromEnvironment(argument_count);
- call = BuildCallConstantFunction(expr->target(), argument_count);
+ call = NewCallConstantFunction(expr->target(), argument_count);
} else {
PushArgumentsFromEnvironment(argument_count);
if (expr->is_uninitialized() &&
« no previous file with comments | « src/crankshaft/hydrogen.h ('k') | src/crankshaft/hydrogen-instructions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698