summaryrefslogtreecommitdiff
path: root/compiler/optimizing/instruction_builder.cc
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2020-08-27 17:36:24 +0100
committerVladimir Marko <vmarko@google.com>2020-08-27 17:36:24 +0100
commit0280e5d21e387812b7a1719d75ef2e3a94280c60 (patch)
treead79993400d41f2b0de9662f230b89787a750c8a /compiler/optimizing/instruction_builder.cc
parent4100e5e2ebb9376696ae3b9f26dccde5ebcf5c7e (diff)
Optimizing: Improve generated code for HLoadClass...
... for resolved package-private class accessed from unresolved compiling class in the same package. Test: Additional tests in 727-checker-unresolved-class. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 161898207 Change-Id: I215dcd9db2297f5c8d9547635d80975d88534579
Diffstat (limited to 'compiler/optimizing/instruction_builder.cc')
-rw-r--r--compiler/optimizing/instruction_builder.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc
index 1aef100a89..2da19ba696 100644
--- a/compiler/optimizing/instruction_builder.cc
+++ b/compiler/optimizing/instruction_builder.cc
@@ -2419,9 +2419,11 @@ bool HInstructionBuilder::LoadClassNeedsAccessCheck(ObjPtr<mirror::Class> klass)
return true;
} else if (klass->IsPublic()) {
return false;
+ } else if (dex_compilation_unit_->GetCompilingClass() != nullptr) {
+ return !dex_compilation_unit_->GetCompilingClass()->CanAccess(klass);
} else {
- ObjPtr<mirror::Class> compiling_class = dex_compilation_unit_->GetCompilingClass().Get();
- return compiling_class == nullptr || !compiling_class->CanAccess(klass);
+ SamePackageCompare same_package(*dex_compilation_unit_);
+ return !same_package(klass);
}
}