Commit 5361f7ff authored by bmeurer's avatar bmeurer Committed by Commit bot

[turbofan] Optimize API function calls based on inferred receiver maps.

Previously API function calls would only be optimized in TurboFan when
the receiver was a (compile-time) known constant, which was probably
only true for certain cases where functions where called on the global
proxy (the window object).

BUG=v8:5267,v8:6304
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2839953002
Cr-Commit-Position: refs/heads/master@{#44877}
parent c1c93e82
This diff is collapsed.
...@@ -41,8 +41,7 @@ class JSCallReducer final : public AdvancedReducer { ...@@ -41,8 +41,7 @@ class JSCallReducer final : public AdvancedReducer {
Reduction ReduceArrayConstructor(Node* node); Reduction ReduceArrayConstructor(Node* node);
Reduction ReduceBooleanConstructor(Node* node); Reduction ReduceBooleanConstructor(Node* node);
Reduction ReduceCallApiFunction( Reduction ReduceCallApiFunction(
Node* node, Node* target, Node* node, Handle<FunctionTemplateInfo> function_template_info);
Handle<FunctionTemplateInfo> function_template_info);
Reduction ReduceNumberConstructor(Node* node); Reduction ReduceNumberConstructor(Node* node);
Reduction ReduceFunctionPrototypeApply(Node* node); Reduction ReduceFunctionPrototypeApply(Node* node);
Reduction ReduceFunctionPrototypeCall(Node* node); Reduction ReduceFunctionPrototypeCall(Node* node);
...@@ -57,17 +56,12 @@ class JSCallReducer final : public AdvancedReducer { ...@@ -57,17 +56,12 @@ class JSCallReducer final : public AdvancedReducer {
Reduction ReduceJSCall(Node* node); Reduction ReduceJSCall(Node* node);
Reduction ReduceJSCallWithSpread(Node* node); Reduction ReduceJSCallWithSpread(Node* node);
enum HolderLookup { kHolderNotFound, kHolderIsReceiver, kHolderFound };
HolderLookup LookupHolder(Handle<JSObject> object,
Handle<FunctionTemplateInfo> function_template_info,
Handle<JSObject>* holder);
Graph* graph() const; Graph* graph() const;
JSGraph* jsgraph() const { return jsgraph_; } JSGraph* jsgraph() const { return jsgraph_; }
Isolate* isolate() const; Isolate* isolate() const;
Factory* factory() const; Factory* factory() const;
Handle<Context> native_context() const { return native_context_; } Handle<Context> native_context() const { return native_context_; }
Handle<JSGlobalProxy> global_proxy() const;
CommonOperatorBuilder* common() const; CommonOperatorBuilder* common() const;
JSOperatorBuilder* javascript() const; JSOperatorBuilder* javascript() const;
SimplifiedOperatorBuilder* simplified() const; SimplifiedOperatorBuilder* simplified() const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment