summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Hertz <shertz@google.com>2014-08-28 16:50:17 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-08-28 16:50:18 +0000
commitdbc0ca70bcee22561c2f0ab7129a7721369e9aea (patch)
tree31d11bd22ca174488ae0946d2e84a2a3b3a2483e
parent9c18858899738f79e75b5a31a96b91c8bfa8bdd7 (diff)
parentae94e350f100207359b8345d8d21e78e7cfb44c4 (diff)
downloadandroid_art-dbc0ca70bcee22561c2f0ab7129a7721369e9aea.tar.gz
android_art-dbc0ca70bcee22561c2f0ab7129a7721369e9aea.tar.bz2
android_art-dbc0ca70bcee22561c2f0ab7129a7721369e9aea.zip
Merge "Ensure proxy constructor is in dex cache"
-rw-r--r--runtime/class_linker.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 4123fc6398..d8f01db776 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -3776,6 +3776,10 @@ mirror::ArtMethod* ClassLinker::CreateProxyConstructor(Thread* self,
proxy_class->GetDirectMethods();
CHECK_EQ(proxy_direct_methods->GetLength(), 16);
mirror::ArtMethod* proxy_constructor = proxy_direct_methods->Get(2);
+ // Ensure constructor is in dex cache so that we can use the dex cache to look up the overridden
+ // constructor method.
+ proxy_class->GetDexCache()->SetResolvedMethod(proxy_constructor->GetDexMethodIndex(),
+ proxy_constructor);
// Clone the existing constructor of Proxy (our constructor would just invoke it so steal its
// code_ too)
mirror::ArtMethod* constructor = down_cast<mirror::ArtMethod*>(proxy_constructor->Clone(self));