summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2015-07-01 18:41:04 +0100
committerCalin Juravle <calin@google.com>2015-07-08 13:56:41 +0100
commit20e6071362b84a9782b633a893c29ebde458205e (patch)
tree8d1089cf494fc2b55d986c3084a80015925cc614 /compiler/optimizing/graph_visualizer.cc
parent2b252dc15995a708aead33aab6d307205d860a88 (diff)
Use the object class as top in reference type propagation
This properly types all instructions, making it safe to query the type at any time. Change-Id: I3ee2f0f79253cdf45b10ddab37ecb473345ca53a
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r--compiler/optimizing/graph_visualizer.cc17
1 files changed, 6 insertions, 11 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc
index c41574c93c..1411f6eb22 100644
--- a/compiler/optimizing/graph_visualizer.cc
+++ b/compiler/optimizing/graph_visualizer.cc
@@ -461,19 +461,14 @@ class HGraphVisualizerPrinter : public HGraphVisitor {
if (instruction->IsLoadClass()) {
ReferenceTypeInfo info = instruction->AsLoadClass()->GetLoadedClassRTI();
ScopedObjectAccess soa(Thread::Current());
- if (info.GetTypeHandle().GetReference() != nullptr) {
- StartAttributeStream("klass") << PrettyClass(info.GetTypeHandle().Get());
- } else {
- StartAttributeStream("klass") << "unresolved";
- }
+ DCHECK(info.IsValid()) << "Invalid RTI for " << instruction->DebugName();
+ StartAttributeStream("klass") << PrettyClass(info.GetTypeHandle().Get());
+ StartAttributeStream("exact") << std::boolalpha << info.IsExact() << std::noboolalpha;
} else {
ReferenceTypeInfo info = instruction->GetReferenceTypeInfo();
- if (info.IsTop()) {
- StartAttributeStream("klass") << "java.lang.Object";
- } else {
- ScopedObjectAccess soa(Thread::Current());
- StartAttributeStream("klass") << PrettyClass(info.GetTypeHandle().Get());
- }
+ ScopedObjectAccess soa(Thread::Current());
+ DCHECK(info.IsValid()) << "Invalid RTI for " << instruction->DebugName();
+ StartAttributeStream("klass") << PrettyClass(info.GetTypeHandle().Get());
StartAttributeStream("exact") << std::boolalpha << info.IsExact() << std::noboolalpha;
}
}