diff options
author | 2023-01-06 12:06:13 +0000 | |
---|---|---|
committer | 2023-01-16 12:14:00 +0000 | |
commit | ae12f96965dd1fb1cf5fefb0188b749e921ba88b (patch) | |
tree | 802eb68fb823189f39cb1d7e57ed9e035568f4b9 /runtime/class_linker.cc | |
parent | e52e4fb74e9f13009af4ffbfb2e5103ce035a94b (diff) |
Refactor code aroud method resolution.
- Make unresolved AOT entrypoints use the tls cache
- Remove duplicate code
- Inline method access checks logic in its only use.
- Fix in ClassLinker::ResolveMethodWithoutInvokeType() by calling shared
helper.
Test: test.py
Change-Id: I1f42b5d0ac1dcd9c5eb483db9c5c5eefc9b2f4d1
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r-- | runtime/class_linker.cc | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index e109a505b6..8082d46e25 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -9471,19 +9471,7 @@ ArtMethod* ClassLinker::ResolveMethodWithoutInvokeType(uint32_t method_idx, Thread::Current()->AssertPendingException(); return nullptr; } - if (klass->IsInterface()) { - resolved = klass->FindInterfaceMethod(dex_cache.Get(), method_idx, image_pointer_size_); - } else { - resolved = klass->FindClassMethod(dex_cache.Get(), method_idx, image_pointer_size_); - } - if (resolved != nullptr && - hiddenapi::ShouldDenyAccessToMember( - resolved, - hiddenapi::AccessContext(class_loader.Get(), dex_cache.Get()), - hiddenapi::AccessMethod::kLinking)) { - resolved = nullptr; - } - return resolved; + return FindResolvedMethod(klass, dex_cache.Get(), class_loader.Get(), method_idx); } ArtField* ClassLinker::LookupResolvedField(uint32_t field_idx, |