From cde6497d286337de2ed21c71c85157e2745b742b Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Tue, 25 Apr 2023 16:40:06 +0000 Subject: Optimizing: Add `HInstruction::As##type()`. After the old implementation was renamed in https://android-review.googlesource.com/2526708 , we introduce a new function with the old name but new behavior, just `DCHECK()`-ing the instruction kind before casting down the pointer. We change appropriate calls from `As##type##OrNull()` to `As##type()` to avoid unncessary run-time checks and reduce the size of libart-compiler.so. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: run-gtests.sh Test: testrunner.py --target --optimizing Bug: 181943478 Change-Id: I025681612a77ca2157fed4886ca47f2053975d4e --- compiler/optimizing/graph_visualizer.cc | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'compiler/optimizing/graph_visualizer.cc') diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc index a264968b10..73bdd1e223 100644 --- a/compiler/optimizing/graph_visualizer.cc +++ b/compiler/optimizing/graph_visualizer.cc @@ -323,17 +323,13 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor { stream << "#"; HConstant* constant = location.GetConstant(); if (constant->IsIntConstant()) { - // TODO: Remove "OrNull". - stream << constant->AsIntConstantOrNull()->GetValue(); + stream << constant->AsIntConstant()->GetValue(); } else if (constant->IsLongConstant()) { - // TODO: Remove "OrNull". - stream << constant->AsLongConstantOrNull()->GetValue(); + stream << constant->AsLongConstant()->GetValue(); } else if (constant->IsFloatConstant()) { - // TODO: Remove "OrNull". - stream << constant->AsFloatConstantOrNull()->GetValue(); + stream << constant->AsFloatConstant()->GetValue(); } else if (constant->IsDoubleConstant()) { - // TODO: Remove "OrNull". - stream << constant->AsDoubleConstantOrNull()->GetValue(); + stream << constant->AsDoubleConstant()->GetValue(); } else if (constant->IsNullConstant()) { stream << "null"; } @@ -629,8 +625,7 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor { void VisitVecDotProd(HVecDotProd* instruction) override { VisitVecOperation(instruction); - // TODO: Remove "OrNull". - DataType::Type arg_type = instruction->InputAt(1)->AsVecOperationOrNull()->GetPackedType(); + DataType::Type arg_type = instruction->InputAt(1)->AsVecOperation()->GetPackedType(); StartAttributeStream("type") << (instruction->IsZeroExtending() ? DataType::ToUnsigned(arg_type) : DataType::ToSigned(arg_type)); @@ -752,14 +747,13 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor { && (instruction->GetType() == DataType::Type::kReference || instruction->IsInstanceOf() || instruction->IsCheckCast())) { - // TODO: Remove "OrNull". ReferenceTypeInfo info = (instruction->GetType() == DataType::Type::kReference) ? instruction->IsLoadClass() - ? instruction->AsLoadClassOrNull()->GetLoadedClassRTI() + ? instruction->AsLoadClass()->GetLoadedClassRTI() : instruction->GetReferenceTypeInfo() : instruction->IsInstanceOf() - ? instruction->AsInstanceOfOrNull()->GetTargetClassRTI() - : instruction->AsCheckCastOrNull()->GetTargetClassRTI(); + ? instruction->AsInstanceOf()->GetTargetClassRTI() + : instruction->AsCheckCast()->GetTargetClassRTI(); ScopedObjectAccess soa(Thread::Current()); if (info.IsValid()) { StartAttributeStream("klass") -- cgit v1.2.3-59-g8ed1b