summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2024-02-06 15:59:21 +0000
committer VladimĂ­r Marko <vmarko@google.com> 2025-03-05 11:53:28 -0800
commitbe727cf341cc6fdc90ddb168c06d8c67230d834f (patch)
tree13f4fb5f4a09082019ddd261864fb52e27ea7edf
parent074c9a399cff12f72048ebfcff87293cc0aeb9d5 (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.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(); }