summaryrefslogtreecommitdiffstats
path: root/runtime/method_helper.h
diff options
context:
space:
mode:
authorHiroshi Yamauchi <yamauchi@google.com>2014-08-19 13:10:36 -0700
committerHiroshi Yamauchi <yamauchi@google.com>2014-08-19 13:16:42 -0700
commit41369d2f7042b728a78d5f1e8c49925463e50294 (patch)
tree266b5ca79dd207f8f93d6ad3e7512b8c59bd9b7a /runtime/method_helper.h
parent92fd388b9bb433a54e9e7a4e6ab9415f59d8956c (diff)
downloadart-41369d2f7042b728a78d5f1e8c49925463e50294.zip
art-41369d2f7042b728a78d5f1e8c49925463e50294.tar.gz
art-41369d2f7042b728a78d5f1e8c49925463e50294.tar.bz2
Avoid handle-less methods in ClassLinker::LinkInterfaceMethods().
There were some handle-less methods in local variables across potential GC points. Bug: 12687968 Change-Id: I786fbaadf7a52e98194080c67c90fc1c35060d59
Diffstat (limited to 'runtime/method_helper.h')
-rw-r--r--runtime/method_helper.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/method_helper.h b/runtime/method_helper.h
index f71d273..8150456 100644
--- a/runtime/method_helper.h
+++ b/runtime/method_helper.h
@@ -41,6 +41,11 @@ class MethodHelper {
return method_->GetInterfaceMethodIfProxy();
}
+ // GetMethod() != Get() for proxy methods.
+ mirror::ArtMethod* Get() const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
+ return method_.Get();
+ }
+
mirror::String* GetNameAsString(Thread* self) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
const char* GetShorty() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {