summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
author Calin Juravle <calin@google.com> 2015-11-19 17:55:50 +0000
committer android-build-merger <android-build-merger@google.com> 2015-11-19 17:55:50 +0000
commit29472606d522f036a8a96001cea01e5e87168e5e (patch)
treef5dbcdd61cb70f1c61c700e90264868b3dedb477 /compiler/optimizing/graph_visualizer.cc
parent41817d467b3966fa39645a791ca372573caa07d3 (diff)
parent33a9a16a7fe21d37125853e888634d9de0b71a98 (diff)
Merge "Allow NullConstant to be untyped in GraphVisualiser."
am: 33a9a16a7f * commit '33a9a16a7fe21d37125853e888634d9de0b71a98': Allow NullConstant to be untyped in GraphVisualiser.
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r--compiler/optimizing/graph_visualizer.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc
index af3ecb1031..d166d0061f 100644
--- a/compiler/optimizing/graph_visualizer.cc
+++ b/compiler/optimizing/graph_visualizer.cc
@@ -503,6 +503,18 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor {
StartAttributeStream("exact") << std::boolalpha << info.IsExact() << std::noboolalpha;
} else if (instruction->IsLoadClass()) {
StartAttributeStream("klass") << "unresolved";
+ } else if (instruction->IsNullConstant()) {
+ // The NullConstant may be added to the graph during other passes that happen between
+ // ReferenceTypePropagation and Inliner (e.g. InstructionSimplifier). If the inliner
+ // doesn't run or doesn't inline anything, the NullConstant remains untyped.
+ // So we should check NullConstants for validity only after reference type propagation.
+ //
+ // Note: The infrastructure to properly type NullConstants everywhere is to complex to add
+ // for the benefits.
+ StartAttributeStream("klass") << "not_set";
+ DCHECK(!is_after_pass_
+ || !IsPass(ReferenceTypePropagation::kReferenceTypePropagationPassName))
+ << " Expected a valid rti after reference type propagation";
} else {
DCHECK(!is_after_pass_)
<< "Expected a valid rti after reference type propagation";