diff options
author | Calin Juravle <calin@google.com> | 2015-07-01 18:41:04 +0100 |
---|---|---|
committer | Calin Juravle <calin@google.com> | 2015-07-08 13:56:41 +0100 |
commit | 20e6071362b84a9782b633a893c29ebde458205e (patch) | |
tree | 8d1089cf494fc2b55d986c3084a80015925cc614 /compiler/optimizing/graph_visualizer.cc | |
parent | 2b252dc15995a708aead33aab6d307205d860a88 (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.cc | 17 |
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; } } |