diff options
| author | 2025-01-21 09:40:06 -0800 | |
|---|---|---|
| committer | 2025-01-21 09:40:06 -0800 | |
| commit | 05c5447d62c2789d78f3068afd44b0341f51456e (patch) | |
| tree | 1c099edff66d4df1c3654f0b615bec23cc72b3b2 /compiler/optimizing | |
| parent | 45820cae90b06d78498b2729831df73b6050e86a (diff) | |
| parent | b30c5a0d84cd03ae465bda61ee41ddaec326b9d5 (diff) | |
Add new WellKnownClasses fields to avoid harcoded constants. am: b30c5a0d84
Original change: https://android-review.googlesource.com/c/platform/art/+/3457760
Change-Id: Ie12583b5702398ca2c2b0a5ca019c894302c8de2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'compiler/optimizing')
| -rw-r--r-- | compiler/optimizing/inliner.cc | 13 | ||||
| -rw-r--r-- | compiler/optimizing/inliner.h | 3 | ||||
| -rw-r--r-- | compiler/optimizing/instruction_simplifier.cc | 3 | ||||
| -rw-r--r-- | compiler/optimizing/intrinsics.cc | 8 | ||||
| -rw-r--r-- | compiler/optimizing/reference_type_propagation.cc | 3 |
5 files changed, 11 insertions, 19 deletions
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index 201841a5b4..be8bc69de0 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -801,11 +801,9 @@ HInliner::InlineCacheType HInliner::GetInlineCacheAOT( return GetInlineCacheType(*classes); } -HInstanceFieldGet* HInliner::BuildGetReceiverClass(ClassLinker* class_linker, - HInstruction* receiver, +HInstanceFieldGet* HInliner::BuildGetReceiverClass(HInstruction* receiver, uint32_t dex_pc) const { - ArtField* field = GetClassRoot<mirror::Object>(class_linker)->GetField(0); - DCHECK_EQ(std::string(field->GetName()), "shadow$_klass_"); + ArtField* field = WellKnownClasses::java_lang_Object_shadowKlass; HInstanceFieldGet* result = new (graph_->GetAllocator()) HInstanceFieldGet( receiver, field, @@ -955,7 +953,7 @@ HInstruction* HInliner::AddTypeGuard(HInstruction* receiver, bool with_deoptimization) { ClassLinker* class_linker = caller_compilation_unit_.GetClassLinker(); HInstanceFieldGet* receiver_class = BuildGetReceiverClass( - class_linker, receiver, invoke_instruction->GetDexPc()); + receiver, invoke_instruction->GetDexPc()); if (cursor != nullptr) { bb_cursor->InsertInstructionAfter(receiver_class, cursor); } else { @@ -1270,7 +1268,7 @@ bool HInliner::TryInlinePolymorphicCallToSameTarget( // We successfully inlined, now add a guard. HInstanceFieldGet* receiver_class = BuildGetReceiverClass( - class_linker, receiver, invoke_instruction->GetDexPc()); + receiver, invoke_instruction->GetDexPc()); DataType::Type type = Is64BitInstructionSet(graph_->GetInstructionSet()) ? DataType::Type::kInt64 @@ -2452,7 +2450,8 @@ bool HInliner::ReturnTypeMoreSpecific(HInstruction* return_replacement, return true; } else if (return_replacement->IsInstanceFieldGet()) { HInstanceFieldGet* field_get = return_replacement->AsInstanceFieldGet(); - if (field_get->GetFieldInfo().GetField() == GetClassRoot<mirror::Object>()->GetField(0)) { + ArtField* cls_field = WellKnownClasses::java_lang_Object_shadowKlass; + if (field_get->GetFieldInfo().GetField() == cls_field) { return true; } } diff --git a/compiler/optimizing/inliner.h b/compiler/optimizing/inliner.h index 57d3364051..4afb78a0e2 100644 --- a/compiler/optimizing/inliner.h +++ b/compiler/optimizing/inliner.h @@ -246,8 +246,7 @@ class HInliner : public HOptimization { HInstruction* cursor, HBasicBlock* bb_cursor); - HInstanceFieldGet* BuildGetReceiverClass(ClassLinker* class_linker, - HInstruction* receiver, + HInstanceFieldGet* BuildGetReceiverClass(HInstruction* receiver, uint32_t dex_pc) const REQUIRES_SHARED(Locks::mutator_lock_); diff --git a/compiler/optimizing/instruction_simplifier.cc b/compiler/optimizing/instruction_simplifier.cc index 101808a193..26efefa2d8 100644 --- a/compiler/optimizing/instruction_simplifier.cc +++ b/compiler/optimizing/instruction_simplifier.cc @@ -1800,8 +1800,7 @@ static bool RecognizeAndSimplifyClassCheck(HCondition* condition) { { ScopedObjectAccess soa(Thread::Current()); - ArtField* field = GetClassRoot<mirror::Object>()->GetField(0); - DCHECK_EQ(std::string(field->GetName()), "shadow$_klass_"); + ArtField* field = WellKnownClasses::java_lang_Object_shadowKlass; if (field_get->GetFieldInfo().GetField() != field) { return false; } diff --git a/compiler/optimizing/intrinsics.cc b/compiler/optimizing/intrinsics.cc index 6b91cf515e..713806e217 100644 --- a/compiler/optimizing/intrinsics.cc +++ b/compiler/optimizing/intrinsics.cc @@ -173,17 +173,13 @@ IntrinsicVisitor::ValueOfInfo IntrinsicVisitor::ComputeValueOfInfo( MemberOffset IntrinsicVisitor::GetReferenceDisableIntrinsicOffset() { ScopedObjectAccess soa(Thread::Current()); - // The "disableIntrinsic" is the first field. - ArtField* field = GetClassRoot<mirror::Reference>()->GetField(0); - DCHECK_STREQ(field->GetName(), "disableIntrinsic"); + ArtField* field = WellKnownClasses::java_lang_ref_Reference_disableIntrinsic; return field->GetOffset(); } MemberOffset IntrinsicVisitor::GetReferenceSlowPathEnabledOffset() { ScopedObjectAccess soa(Thread::Current()); - // The "slowPathEnabled" is the sixth field. - ArtField* field = GetClassRoot<mirror::Reference>()->GetField(5); - DCHECK_STREQ(field->GetName(), "slowPathEnabled"); + ArtField* field = WellKnownClasses::java_lang_ref_Reference_slowPathEnabled; return field->GetOffset(); } diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc index 8ff1b89f9e..3e90a0881f 100644 --- a/compiler/optimizing/reference_type_propagation.cc +++ b/compiler/optimizing/reference_type_propagation.cc @@ -278,8 +278,7 @@ static void BoundTypeForClassCheck(HInstruction* check) { { ScopedObjectAccess soa(Thread::Current()); - ArtField* field = GetClassRoot<mirror::Object>()->GetField(0); - DCHECK_EQ(std::string(field->GetName()), "shadow$_klass_"); + ArtField* field = WellKnownClasses::java_lang_Object_shadowKlass; if (field_get->GetFieldInfo().GetField() != field) { return; } |