diff options
author | 2024-02-06 15:59:21 +0000 | |
---|---|---|
committer | 2025-03-05 11:53:28 -0800 | |
commit | be727cf341cc6fdc90ddb168c06d8c67230d834f (patch) | |
tree | 13f4fb5f4a09082019ddd261864fb52e27ea7edf | |
parent | 074c9a399cff12f72048ebfcff87293cc0aeb9d5 (diff) |
Remove `HInstruction::IsFieldAccess()`.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I697263c647d76a13b9de56a2134a6e8554c20929
-rw-r--r-- | compiler/optimizing/load_store_elimination.cc | 28 | ||||
-rw-r--r-- | compiler/optimizing/nodes.h | 10 |
2 files changed, 14 insertions, 24 deletions
diff --git a/compiler/optimizing/load_store_elimination.cc b/compiler/optimizing/load_store_elimination.cc index c4b68e41c9..efe6253f96 100644 --- a/compiler/optimizing/load_store_elimination.cc +++ b/compiler/optimizing/load_store_elimination.cc @@ -785,8 +785,10 @@ class LSEVisitor final : private HGraphDelegateVisitor { // Treat it as a normal load if it is a removable singleton. } - const FieldInfo& field = instruction->GetFieldInfo(); - VisitGetLocation(instruction, heap_location_collector_.GetFieldHeapLocation(object, &field)); + const FieldInfo& field_info = instruction->GetFieldInfo(); + size_t idx = heap_location_collector_.GetFieldHeapLocation(object, &field_info); + RecordFieldInfo(&field_info, idx); + VisitGetLocation(instruction, idx); } void VisitInstanceFieldSet(HInstanceFieldSet* instruction) override { @@ -801,9 +803,10 @@ class LSEVisitor final : private HGraphDelegateVisitor { // Treat it as a normal store if it is a removable singleton. } - const FieldInfo& field = instruction->GetFieldInfo(); + const FieldInfo& field_info = instruction->GetFieldInfo(); HInstruction* value = instruction->InputAt(1); - size_t idx = heap_location_collector_.GetFieldHeapLocation(object, &field); + size_t idx = heap_location_collector_.GetFieldHeapLocation(object, &field_info); + RecordFieldInfo(&field_info, idx); VisitSetLocation(instruction, idx, value); } @@ -813,9 +816,11 @@ class LSEVisitor final : private HGraphDelegateVisitor { return; } - const FieldInfo& field = instruction->GetFieldInfo(); + const FieldInfo& field_info = instruction->GetFieldInfo(); HInstruction* cls = instruction->InputAt(0); - VisitGetLocation(instruction, heap_location_collector_.GetFieldHeapLocation(cls, &field)); + size_t idx = heap_location_collector_.GetFieldHeapLocation(cls, &field_info); + RecordFieldInfo(&field_info, idx); + VisitGetLocation(instruction, idx); } void VisitStaticFieldSet(HStaticFieldSet* instruction) override { @@ -824,10 +829,11 @@ class LSEVisitor final : private HGraphDelegateVisitor { return; } - const FieldInfo& field = instruction->GetFieldInfo(); + const FieldInfo& field_info = instruction->GetFieldInfo(); HInstruction* cls = instruction->InputAt(0); HInstruction* value = instruction->InputAt(1); - size_t idx = heap_location_collector_.GetFieldHeapLocation(cls, &field); + size_t idx = heap_location_collector_.GetFieldHeapLocation(cls, &field_info); + RecordFieldInfo(&field_info, idx); VisitSetLocation(instruction, idx, value); } @@ -1544,9 +1550,6 @@ void LSEVisitor::VisitGetLocation(HInstruction* instruction, size_t idx) { uint32_t block_id = instruction->GetBlock()->GetBlockId(); ScopedArenaVector<ValueRecord>& heap_values = heap_values_for_[block_id]; ValueRecord& record = heap_values[idx]; - if (instruction->IsFieldAccess()) { - RecordFieldInfo(&instruction->GetFieldInfo(), idx); - } DCHECK(record.value.IsUnknown() || record.value.Equals(ReplacementOrValue(record.value))); loads_and_stores_.push_back({ instruction, idx }); if ((record.value.IsDefault() || record.value.NeedsNonLoopPhi()) && @@ -1587,9 +1590,6 @@ void LSEVisitor::VisitGetLocation(HInstruction* instruction, size_t idx) { void LSEVisitor::VisitSetLocation(HInstruction* instruction, size_t idx, HInstruction* value) { DCHECK_NE(idx, HeapLocationCollector::kHeapLocationNotFound); DCHECK(!IsStore(value)) << value->DebugName(); - if (instruction->IsFieldAccess()) { - RecordFieldInfo(&instruction->GetFieldInfo(), idx); - } // value may already have a substitute. value = FindSubstitute(value); HBasicBlock* block = instruction->GetBlock(); diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index bcf27ae9fa..66bef7a8f1 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -2442,13 +2442,7 @@ class HInstruction : public ArenaObject<kArenaAllocInstruction> { UNREACHABLE(); } - virtual bool IsFieldAccess() const { - return false; - } - virtual const FieldInfo& GetFieldInfo() const { - CHECK(IsFieldAccess()) << "Only callable on field accessors not " << DebugName() << " " - << *this; LOG(FATAL) << "Must be overridden by field accessors. Not implemented by " << *this; UNREACHABLE(); } @@ -6105,7 +6099,6 @@ class HInstanceFieldGet final : public HExpression<1> { return (HInstruction::ComputeHashCode() << 7) | GetFieldOffset().SizeValue(); } - bool IsFieldAccess() const override { return true; } const FieldInfo& GetFieldInfo() const override { return field_info_; } MemberOffset GetFieldOffset() const { return field_info_.GetFieldOffset(); } DataType::Type GetFieldType() const { return field_info_.GetFieldType(); } @@ -6179,7 +6172,6 @@ class HInstanceFieldSet final : public HExpression<2> { return (obj == InputAt(0)) && art::CanDoImplicitNullCheckOn(GetFieldOffset().Uint32Value()); } - bool IsFieldAccess() const override { return true; } const FieldInfo& GetFieldInfo() const override { return field_info_; } MemberOffset GetFieldOffset() const { return field_info_.GetFieldOffset(); } DataType::Type GetFieldType() const { return field_info_.GetFieldType(); } @@ -7252,7 +7244,6 @@ class HStaticFieldGet final : public HExpression<1> { return (HInstruction::ComputeHashCode() << 7) | GetFieldOffset().SizeValue(); } - bool IsFieldAccess() const override { return true; } const FieldInfo& GetFieldInfo() const override { return field_info_; } MemberOffset GetFieldOffset() const { return field_info_.GetFieldOffset(); } DataType::Type GetFieldType() const { return field_info_.GetFieldType(); } @@ -7306,7 +7297,6 @@ class HStaticFieldSet final : public HExpression<2> { } bool IsClonable() const override { return true; } - bool IsFieldAccess() const override { return true; } const FieldInfo& GetFieldInfo() const override { return field_info_; } MemberOffset GetFieldOffset() const { return field_info_.GetFieldOffset(); } DataType::Type GetFieldType() const { return field_info_.GetFieldType(); } |