| Index: src/compiler/js-inlining-heuristic.h
|
| diff --git a/src/compiler/js-inlining-heuristic.h b/src/compiler/js-inlining-heuristic.h
|
| index 7f577475bf46f02d218a91a0ff7a48c6c861b5b2..87b3c864e02838313bfeb7cc1652b479af43ebbe 100644
|
| --- a/src/compiler/js-inlining-heuristic.h
|
| +++ b/src/compiler/js-inlining-heuristic.h
|
| @@ -21,7 +21,7 @@ class JSInliningHeuristic final : public AdvancedReducer {
|
| inliner_(editor, local_zone, info, jsgraph),
|
| candidates_(local_zone),
|
| seen_(local_zone),
|
| - info_(info) {}
|
| + jsgraph_(jsgraph) {}
|
|
|
| Reduction Reduce(Node* node) final;
|
|
|
| @@ -30,10 +30,15 @@ class JSInliningHeuristic final : public AdvancedReducer {
|
| void Finalize() final;
|
|
|
| private:
|
| + // This limit currently matches what Crankshaft does. We may want to
|
| + // re-evaluate and come up with a proper limit for TurboFan.
|
| + static const int kMaxCallPolymorphism = 4;
|
| +
|
| struct Candidate {
|
| - Handle<JSFunction> function; // The call target being inlined.
|
| - Node* node; // The call site at which to inline.
|
| - int calls; // Number of times the call site was hit.
|
| + Handle<JSFunction> functions[kMaxCallPolymorphism];
|
| + int num_functions;
|
| + Node* node = nullptr; // The call site at which to inline.
|
| + int calls = -1; // Number of times the call site was hit.
|
| };
|
|
|
| // Comparator for candidates.
|
| @@ -46,12 +51,18 @@ class JSInliningHeuristic final : public AdvancedReducer {
|
|
|
| // Dumps candidates to console.
|
| void PrintCandidates();
|
| + Reduction InlineCandidate(Candidate const& candidate);
|
| +
|
| + CommonOperatorBuilder* common() const;
|
| + Graph* graph() const;
|
| + JSGraph* jsgraph() const { return jsgraph_; }
|
| + SimplifiedOperatorBuilder* simplified() const;
|
|
|
| Mode const mode_;
|
| JSInliner inliner_;
|
| Candidates candidates_;
|
| ZoneSet<NodeId> seen_;
|
| - CompilationInfo* info_;
|
| + JSGraph* const jsgraph_;
|
| int cumulative_count_ = 0;
|
| };
|
|
|
|
|