Use ObjPtr for ResolvedFieldAccessTest and ResolvedMethodAccessTest
Also added LookupResolvedType that is guaranteed to not do thread
suspension but deals with multidex since GetResolvedType will
return null if the type was resolved in another dex file.
Added test.
Bug: 31113334
Test: test-art-host CC baker
Change-Id: I50493bca7d8ce9760546c3116b717484c62c47a4
diff --git a/runtime/mirror/class.h b/runtime/mirror/class.h
index d38f235..a0d6f37 100644
--- a/runtime/mirror/class.h
+++ b/runtime/mirror/class.h
@@ -1287,14 +1287,17 @@
void SetVerifyError(Object* klass) REQUIRES_SHARED(Locks::mutator_lock_);
template <bool throw_on_failure, bool use_referrers_cache>
- bool ResolvedFieldAccessTest(Class* access_to,
+ bool ResolvedFieldAccessTest(ObjPtr<Class> access_to,
ArtField* field,
uint32_t field_idx,
- DexCache* dex_cache)
+ ObjPtr<DexCache> dex_cache)
REQUIRES_SHARED(Locks::mutator_lock_);
+
template <bool throw_on_failure, bool use_referrers_cache, InvokeType throw_invoke_type>
- bool ResolvedMethodAccessTest(Class* access_to, ArtMethod* resolved_method,
- uint32_t method_idx, DexCache* dex_cache)
+ bool ResolvedMethodAccessTest(ObjPtr<Class> access_to,
+ ArtMethod* resolved_method,
+ uint32_t method_idx,
+ ObjPtr<DexCache> dex_cache)
REQUIRES_SHARED(Locks::mutator_lock_);
bool Implements(Class* klass) REQUIRES_SHARED(Locks::mutator_lock_);