summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/optimizing/inliner.cc13
-rw-r--r--compiler/optimizing/inliner.h3
-rw-r--r--compiler/optimizing/instruction_simplifier.cc3
-rw-r--r--compiler/optimizing/intrinsics.cc8
-rw-r--r--compiler/optimizing/reference_type_propagation.cc3
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;
}