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

Unified Diff: src/compiler/js-inlining-heuristic.cc

Issue 2856103002: [turbofan] Introduce dedicated CallFrequency class. (Closed)
Patch Set: Address offline feedback from jarin@. Created 3 years, 8 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/compiler/js-inlining-heuristic.h ('k') | src/compiler/js-intrinsic-lowering.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/js-inlining-heuristic.cc
diff --git a/src/compiler/js-inlining-heuristic.cc b/src/compiler/js-inlining-heuristic.cc
index abff7b6571d37d8b3505a7e149d84ddbf6ac4a2b..7442860a7e6aac289ee312ecb3fd7b091616afda 100644
--- a/src/compiler/js-inlining-heuristic.cc
+++ b/src/compiler/js-inlining-heuristic.cc
@@ -149,7 +149,8 @@ Reduction JSInliningHeuristic::Reduce(Node* node) {
// Don't consider a {candidate} whose frequency is below the
// threshold, i.e. a call site that is only hit once every N
// invocations of the caller.
- if (candidate.frequency < FLAG_min_inlining_frequency) {
+ if (candidate.frequency.IsKnown() &&
+ candidate.frequency.value() < FLAG_min_inlining_frequency) {
return NoChange();
}
@@ -171,10 +172,6 @@ void JSInliningHeuristic::Finalize() {
auto i = candidates_.begin();
Candidate candidate = *i;
candidates_.erase(i);
- // Only include candidates that we've successfully called before.
- // The candidate list is sorted, so we can exit at the first occurance of
- // frequency 0 in the list.
- if (candidate.frequency <= 0.0) return;
// Make sure we don't try to inline dead candidate nodes.
if (!candidate.node->IsDead()) {
Reduction const reduction = InlineCandidate(candidate);
@@ -289,9 +286,13 @@ Reduction JSInliningHeuristic::InlineCandidate(Candidate const& candidate) {
bool JSInliningHeuristic::CandidateCompare::operator()(
const Candidate& left, const Candidate& right) const {
- if (left.frequency > right.frequency) {
+ if (right.frequency.IsUnknown()) {
return true;
- } else if (left.frequency < right.frequency) {
+ } else if (left.frequency.IsUnknown()) {
+ return false;
+ } else if (left.frequency.value() > right.frequency.value()) {
+ return true;
+ } else if (left.frequency.value() < right.frequency.value()) {
return false;
} else {
return left.node->id() > right.node->id();
@@ -299,10 +300,12 @@ bool JSInliningHeuristic::CandidateCompare::operator()(
}
void JSInliningHeuristic::PrintCandidates() {
- PrintF("Candidates for inlining (size=%zu):\n", candidates_.size());
+ OFStream os(stdout);
+ os << "Candidates for inlining (size=" << candidates_.size() << "):\n";
for (const Candidate& candidate : candidates_) {
- PrintF(" #%d:%s, frequency:%g\n", candidate.node->id(),
- candidate.node->op()->mnemonic(), candidate.frequency);
+ os << " #" << candidate.node->id() << ":"
+ << candidate.node->op()->mnemonic()
+ << ", frequency: " << candidate.frequency << std::endl;
for (int i = 0; i < candidate.num_functions; ++i) {
Handle<SharedFunctionInfo> shared =
candidate.functions[i].is_null()
« no previous file with comments | « src/compiler/js-inlining-heuristic.h ('k') | src/compiler/js-intrinsic-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698