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

Unified Diff: src/compiler/escape-analysis-reducer.cc

Issue 1608073003: [turbofan] Add TRACE macro for escape analysis. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 11 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/escape-analysis.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/escape-analysis-reducer.cc
diff --git a/src/compiler/escape-analysis-reducer.cc b/src/compiler/escape-analysis-reducer.cc
index 4567d671da745661e594dbe6985cf9c42c646411..2675af5118f2052b963c7e39468839dbfce20924 100644
--- a/src/compiler/escape-analysis-reducer.cc
+++ b/src/compiler/escape-analysis-reducer.cc
@@ -11,6 +11,15 @@ namespace v8 {
namespace internal {
namespace compiler {
+#ifdef DEBUG
+#define TRACE(...) \
+ do { \
+ if (FLAG_trace_turbo_escape) PrintF(__VA_ARGS__); \
+ } while (false)
+#else
+#define TRACE(...)
+#endif // DEBUG
+
EscapeAnalysisReducer::EscapeAnalysisReducer(Editor* editor, JSGraph* jsgraph,
EscapeAnalysis* escape_analysis,
Zone* zone)
@@ -89,10 +98,8 @@ Reduction EscapeAnalysisReducer::ReduceLoad(Node* node) {
if (Node* rep = escape_analysis()->GetReplacement(node)) {
visited_.Add(node->id());
counters()->turbo_escape_loads_replaced()->Increment();
- if (FLAG_trace_turbo_escape) {
- PrintF("Replaced #%d (%s) with #%d (%s)\n", node->id(),
- node->op()->mnemonic(), rep->id(), rep->op()->mnemonic());
- }
+ TRACE("Replaced #%d (%s) with #%d (%s)\n", node->id(),
+ node->op()->mnemonic(), rep->id(), rep->op()->mnemonic());
ReplaceWithValue(node, rep);
return Changed(rep);
}
@@ -106,10 +113,8 @@ Reduction EscapeAnalysisReducer::ReduceStore(Node* node) {
if (visited_.Contains(node->id())) return NoChange();
visited_.Add(node->id());
if (escape_analysis()->IsVirtual(NodeProperties::GetValueInput(node, 0))) {
- if (FLAG_trace_turbo_escape) {
- PrintF("Removed #%d (%s) from effect chain\n", node->id(),
- node->op()->mnemonic());
- }
+ TRACE("Removed #%d (%s) from effect chain\n", node->id(),
+ node->op()->mnemonic());
RelaxEffectsAndControls(node);
return Changed(node);
}
@@ -124,9 +129,7 @@ Reduction EscapeAnalysisReducer::ReduceAllocate(Node* node) {
if (escape_analysis()->IsVirtual(node)) {
RelaxEffectsAndControls(node);
counters()->turbo_escape_allocs_replaced()->Increment();
- if (FLAG_trace_turbo_escape) {
- PrintF("Removed allocate #%d from effect chain\n", node->id());
- }
+ TRACE("Removed allocate #%d from effect chain\n", node->id());
return Changed(node);
}
return NoChange();
@@ -139,6 +142,7 @@ Reduction EscapeAnalysisReducer::ReduceFinishRegion(Node* node) {
if (effect->opcode() == IrOpcode::kBeginRegion) {
RelaxEffectsAndControls(effect);
RelaxEffectsAndControls(node);
+#ifdef DEBUG
if (FLAG_trace_turbo_escape) {
PrintF("Removed region #%d / #%d from effect chain,", effect->id(),
node->id());
@@ -148,6 +152,7 @@ Reduction EscapeAnalysisReducer::ReduceFinishRegion(Node* node) {
}
PrintF("\n");
}
+#endif // DEBUG
return Changed(node);
}
return NoChange();
@@ -162,22 +167,16 @@ Reduction EscapeAnalysisReducer::ReduceReferenceEqual(Node* node) {
if (escape_analysis()->IsVirtual(right) &&
escape_analysis()->CompareVirtualObjects(left, right)) {
ReplaceWithValue(node, jsgraph()->TrueConstant());
- if (FLAG_trace_turbo_escape) {
- PrintF("Replaced ref eq #%d with true\n", node->id());
- }
+ TRACE("Replaced ref eq #%d with true\n", node->id());
}
// Right-hand side is not a virtual object, or a different one.
ReplaceWithValue(node, jsgraph()->FalseConstant());
- if (FLAG_trace_turbo_escape) {
- PrintF("Replaced ref eq #%d with false\n", node->id());
- }
+ TRACE("Replaced ref eq #%d with false\n", node->id());
return Replace(node);
} else if (escape_analysis()->IsVirtual(right)) {
// Left-hand side is not a virtual object.
ReplaceWithValue(node, jsgraph()->FalseConstant());
- if (FLAG_trace_turbo_escape) {
- PrintF("Replaced ref eq #%d with false\n", node->id());
- }
+ TRACE("Replaced ref eq #%d with false\n", node->id());
}
return NoChange();
}
@@ -188,9 +187,7 @@ Reduction EscapeAnalysisReducer::ReduceObjectIsSmi(Node* node) {
Node* input = NodeProperties::GetValueInput(node, 0);
if (escape_analysis()->IsVirtual(input)) {
ReplaceWithValue(node, jsgraph()->FalseConstant());
- if (FLAG_trace_turbo_escape) {
- PrintF("Replaced ObjectIsSmi #%d with false\n", node->id());
- }
+ TRACE("Replaced ObjectIsSmi #%d with false\n", node->id());
return Replace(node);
}
return NoChange();
@@ -227,9 +224,7 @@ Node* EscapeAnalysisReducer::ReduceDeoptState(Node* node, Node* effect,
visited_.Contains(node->id())) {
return nullptr;
}
- if (FLAG_trace_turbo_escape) {
- PrintF("Reducing %s %d\n", node->op()->mnemonic(), node->id());
- }
+ TRACE("Reducing %s %d\n", node->op()->mnemonic(), node->id());
Node* clone = nullptr;
bool node_multiused = node->UseCount() > 1;
bool multiple_users_rec = multiple_users || node_multiused;
@@ -238,13 +233,9 @@ Node* EscapeAnalysisReducer::ReduceDeoptState(Node* node, Node* effect,
if (input->opcode() == IrOpcode::kStateValues) {
if (Node* ret = ReduceDeoptState(input, effect, multiple_users_rec)) {
if (node_multiused || (multiple_users && !clone)) {
- if (FLAG_trace_turbo_escape) {
- PrintF(" Cloning #%d", node->id());
- }
+ TRACE(" Cloning #%d", node->id());
node = clone = jsgraph()->graph()->CloneNode(node);
- if (FLAG_trace_turbo_escape) {
- PrintF(" to #%d\n", node->id());
- }
+ TRACE(" to #%d\n", node->id());
node_multiused = false;
}
NodeProperties::ReplaceValueInput(node, ret, i);
@@ -264,13 +255,9 @@ Node* EscapeAnalysisReducer::ReduceDeoptState(Node* node, Node* effect,
if (Node* ret =
ReduceDeoptState(outer_frame_state, effect, multiple_users_rec)) {
if (node_multiused || (multiple_users && !clone)) {
- if (FLAG_trace_turbo_escape) {
- PrintF(" Cloning #%d", node->id());
- }
+ TRACE(" Cloning #%d", node->id());
node = clone = jsgraph()->graph()->CloneNode(node);
- if (FLAG_trace_turbo_escape) {
- PrintF(" to #%d\n", node->id());
- }
+ TRACE(" to #%d\n", node->id());
}
NodeProperties::ReplaceFrameStateInput(node, 0, ret);
}
@@ -287,10 +274,8 @@ Node* EscapeAnalysisReducer::ReduceStateValueInput(Node* node, int node_index,
bool already_cloned,
bool multiple_users) {
Node* input = NodeProperties::GetValueInput(node, node_index);
- if (FLAG_trace_turbo_escape) {
- PrintF("Reducing State Input #%d (%s)\n", input->id(),
- input->op()->mnemonic());
- }
+ TRACE("Reducing State Input #%d (%s)\n", input->id(),
+ input->op()->mnemonic());
Node* clone = nullptr;
if (input->opcode() == IrOpcode::kFinishRegion ||
input->opcode() == IrOpcode::kAllocate) {
@@ -298,25 +283,19 @@ Node* EscapeAnalysisReducer::ReduceStateValueInput(Node* node, int node_index,
if (Node* object_state =
escape_analysis()->GetOrCreateObjectState(effect, input)) {
if (node_multiused || (multiple_users && !already_cloned)) {
- if (FLAG_trace_turbo_escape) {
- PrintF("Cloning #%d", node->id());
- }
+ TRACE("Cloning #%d", node->id());
node = clone = jsgraph()->graph()->CloneNode(node);
- if (FLAG_trace_turbo_escape) {
- PrintF(" to #%d\n", node->id());
- }
+ TRACE(" to #%d\n", node->id());
node_multiused = false;
already_cloned = true;
}
NodeProperties::ReplaceValueInput(node, object_state, node_index);
- if (FLAG_trace_turbo_escape) {
- PrintF("Replaced state #%d input #%d with object state #%d\n",
- node->id(), input->id(), object_state->id());
- }
+ TRACE("Replaced state #%d input #%d with object state #%d\n",
+ node->id(), input->id(), object_state->id());
} else {
- if (FLAG_trace_turbo_escape) {
- PrintF("No object state replacement available.\n");
- }
+ TRACE("No object state replacement for #%d at effect #%d available.\n",
+ input->id(), effect->id());
+ UNREACHABLE();
}
}
}
« no previous file with comments | « src/compiler/escape-analysis.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698