summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2025-03-05 12:53:26 -0800
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2025-03-05 12:53:26 -0800
commit973c7b78b9ad9d901650d26b7361b3999e939def (patch)
tree34ec50cae2fd2d5fb7ef3bf491aa4e7b5b5979d7
parent860fb8d0f73e1a8ee69e4192accaa4fd253d9e8e (diff)
parent07ff2667bbdd475981a2575565730c07615db4b3 (diff)
Remove `HInstruction::IsFieldAccess()`. am: be727cf341 am: 07ff2667bb
Original change: https://android-review.googlesource.com/c/platform/art/+/2954594 Change-Id: I6b25cec205ae2ea6843ba94d92ed33b5e3722add Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--compiler/optimizing/load_store_elimination.cc28
-rw-r--r--compiler/optimizing/nodes.h10
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(); }