diff options
| author | 2015-11-19 17:55:50 +0000 | |
|---|---|---|
| committer | 2015-11-19 17:55:50 +0000 | |
| commit | 29472606d522f036a8a96001cea01e5e87168e5e (patch) | |
| tree | f5dbcdd61cb70f1c61c700e90264868b3dedb477 /compiler/optimizing/graph_visualizer.cc | |
| parent | 41817d467b3966fa39645a791ca372573caa07d3 (diff) | |
| parent | 33a9a16a7fe21d37125853e888634d9de0b71a98 (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.cc | 12 |
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"; |