diff options
| author | 2017-08-14 18:52:32 +0000 | |
|---|---|---|
| committer | 2017-08-14 18:52:32 +0000 | |
| commit | 7ef52f75dd6e981e1e8c7567f593c197e8a94dcc (patch) | |
| tree | 9685b783f628e290c6307d6ead024aac749a11ab /runtime/class_linker.h | |
| parent | 0888cf1821d6622fd623db31000be19b9365f81c (diff) | |
Revert "ART: Use proxy ArtMethod's data_ to store the interface method."
Broke a few tests with:
+dalvikvm64 F 08-14 18:36:32 136697 136697 art_method-inl.h:392] Check failed: interface_method->GetDeclaringClass()->IsAssignableFrom(GetDeclaringClass())
This reverts commit 0888cf1821d6622fd623db31000be19b9365f81c.
Change-Id: Idc93b6686392f9dfeca3bc11bd22104948fd9fd3
Diffstat (limited to 'runtime/class_linker.h')
| -rw-r--r-- | runtime/class_linker.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/runtime/class_linker.h b/runtime/class_linker.h index 783ec745cf..66bcbe091f 100644 --- a/runtime/class_linker.h +++ b/runtime/class_linker.h @@ -479,6 +479,9 @@ class ClassLinker { REQUIRES_SHARED(Locks::mutator_lock_); std::string GetDescriptorForProxy(ObjPtr<mirror::Class> proxy_class) REQUIRES_SHARED(Locks::mutator_lock_); + ArtMethod* FindMethodForProxy(ArtMethod* proxy_method) + REQUIRES(!Locks::dex_lock_) + REQUIRES_SHARED(Locks::mutator_lock_); // Get the oat code for a method when its class isn't yet initialized. const void* GetQuickOatCodeFor(ArtMethod* method) @@ -672,6 +675,7 @@ class ClassLinker { DexCacheData() : weak_root(nullptr), dex_file(nullptr), + resolved_methods(nullptr), class_table(nullptr) { } // Check if the data is valid. @@ -682,9 +686,11 @@ class ClassLinker { // Weak root to the DexCache. Note: Do not decode this unnecessarily or else class unloading may // not work properly. jweak weak_root; - // The following field caches the DexCache's field here to avoid unnecessary jweak decode that - // triggers read barriers (and marks them alive unnecessarily and messes with class unloading.) + // The following two fields are caches to the DexCache's fields and here to avoid unnecessary + // jweak decode that triggers read barriers (and mark them alive unnecessarily and mess with + // class unloading.) const DexFile* dex_file; + mirror::MethodDexCacheType* resolved_methods; // Identify the associated class loader's class table. This is used to make sure that // the Java call to native DexCache.setResolvedType() inserts the resolved type in that // class table. It is also used to make sure we don't register the same dex cache with |