diff options
author | Andreas Gampe <agampe@google.com> | 2018-03-26 21:16:37 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-03-26 21:16:37 +0000 |
commit | d1ede32d56d2b6c95f94a8c67d8b9f309940d9de (patch) | |
tree | 1aa42a51731533c9d554a913e655b8091fc6829d /compiler/optimizing/graph_visualizer.cc | |
parent | 41a10575b319ca9549d7b3e8a9fe91c1cc602659 (diff) | |
parent | 3fbd3ad99fad077e5c760e7238bcd55b07d4c06e (diff) |
Merge "Revert^3 "Compiler changes for bitstring based type checks.""
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r-- | compiler/optimizing/graph_visualizer.cc | 45 |
1 files changed, 13 insertions, 32 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc index 6cb1881d7d..5ff31cead5 100644 --- a/compiler/optimizing/graph_visualizer.cc +++ b/compiler/optimizing/graph_visualizer.cc @@ -390,23 +390,16 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor { StartAttributeStream("load_kind") << load_string->GetLoadKind(); } - void HandleTypeCheckInstruction(HTypeCheckInstruction* check) { - StartAttributeStream("check_kind") << check->GetTypeCheckKind(); - StartAttributeStream("must_do_null_check") << std::boolalpha - << check->MustDoNullCheck() << std::noboolalpha; - if (check->GetTypeCheckKind() == TypeCheckKind::kBitstringCheck) { - StartAttributeStream("path_to_root") << std::hex - << "0x" << check->GetBitstringPathToRoot() << std::dec; - StartAttributeStream("mask") << std::hex << "0x" << check->GetBitstringMask() << std::dec; - } - } - void VisitCheckCast(HCheckCast* check_cast) OVERRIDE { - HandleTypeCheckInstruction(check_cast); + StartAttributeStream("check_kind") << check_cast->GetTypeCheckKind(); + StartAttributeStream("must_do_null_check") << std::boolalpha + << check_cast->MustDoNullCheck() << std::noboolalpha; } void VisitInstanceOf(HInstanceOf* instance_of) OVERRIDE { - HandleTypeCheckInstruction(instance_of); + StartAttributeStream("check_kind") << instance_of->GetTypeCheckKind(); + StartAttributeStream("must_do_null_check") << std::boolalpha + << instance_of->MustDoNullCheck() << std::noboolalpha; } void VisitArrayLength(HArrayLength* array_length) OVERRIDE { @@ -648,32 +641,20 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor { << std::boolalpha << loop_info->IsIrreducible() << std::noboolalpha; } - // For the builder and the inliner, we want to add extra information on HInstructions - // that have reference types, and also HInstanceOf/HCheckcast. if ((IsPass(HGraphBuilder::kBuilderPassName) || IsPass(HInliner::kInlinerPassName)) - && (instruction->GetType() == DataType::Type::kReference || - instruction->IsInstanceOf() || - instruction->IsCheckCast())) { - ReferenceTypeInfo info = (instruction->GetType() == DataType::Type::kReference) - ? instruction->IsLoadClass() - ? instruction->AsLoadClass()->GetLoadedClassRTI() - : instruction->GetReferenceTypeInfo() - : instruction->IsInstanceOf() - ? instruction->AsInstanceOf()->GetTargetClassRTI() - : instruction->AsCheckCast()->GetTargetClassRTI(); + && (instruction->GetType() == DataType::Type::kReference)) { + ReferenceTypeInfo info = instruction->IsLoadClass() + ? instruction->AsLoadClass()->GetLoadedClassRTI() + : instruction->GetReferenceTypeInfo(); ScopedObjectAccess soa(Thread::Current()); if (info.IsValid()) { StartAttributeStream("klass") << mirror::Class::PrettyDescriptor(info.GetTypeHandle().Get()); - if (instruction->GetType() == DataType::Type::kReference) { - StartAttributeStream("can_be_null") - << std::boolalpha << instruction->CanBeNull() << std::noboolalpha; - } + StartAttributeStream("can_be_null") + << std::boolalpha << instruction->CanBeNull() << std::noboolalpha; StartAttributeStream("exact") << std::boolalpha << info.IsExact() << std::noboolalpha; - } else if (instruction->IsLoadClass() || - instruction->IsInstanceOf() || - instruction->IsCheckCast()) { + } else if (instruction->IsLoadClass()) { StartAttributeStream("klass") << "unresolved"; } else { // The NullConstant may be added to the graph during other passes that happen between |