diff options
author | Jeff Hao <jeffhao@google.com> | 2015-05-27 19:29:29 -0700 |
---|---|---|
committer | Jeff Hao <jeffhao@google.com> | 2015-05-27 19:44:22 -0700 |
commit | 1a302fb4f84525289c1cf7a437f5be1999a75251 (patch) | |
tree | e69db1a280980ed969d0f993f6e05ba70c1d4bd5 /runtime/java_vm_ext.cc | |
parent | e0cc299fd258b6ce6f19a201ca9fce09910f6e42 (diff) | |
download | android_art-1a302fb4f84525289c1cf7a437f5be1999a75251.tar.gz android_art-1a302fb4f84525289c1cf7a437f5be1999a75251.tar.bz2 android_art-1a302fb4f84525289c1cf7a437f5be1999a75251.zip |
Fix updating of JNI references for String.<init>.
Was missing updates to globals and weak globals.
Bug: 21288130
Bug: 21440428
Change-Id: I5f801f68b61f6b066b441b92ace367e6ba434789
Diffstat (limited to 'runtime/java_vm_ext.cc')
-rw-r--r-- | runtime/java_vm_ext.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index b795d72a6a..3142089862 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -562,6 +562,11 @@ mirror::Object* JavaVMExt::DecodeGlobal(Thread* self, IndirectRef ref) { return globals_.SynchronizedGet(self, &globals_lock_, ref); } +void JavaVMExt::UpdateGlobal(Thread* self, IndirectRef ref, mirror::Object* result) { + WriterMutexLock mu(self, globals_lock_); + globals_.Update(ref, result); +} + mirror::Object* JavaVMExt::DecodeWeakGlobal(Thread* self, IndirectRef ref) { MutexLock mu(self, weak_globals_lock_); while (UNLIKELY(!allow_new_weak_globals_)) { @@ -570,6 +575,11 @@ mirror::Object* JavaVMExt::DecodeWeakGlobal(Thread* self, IndirectRef ref) { return weak_globals_.Get(ref); } +void JavaVMExt::UpdateWeakGlobal(Thread* self, IndirectRef ref, mirror::Object* result) { + MutexLock mu(self, weak_globals_lock_); + weak_globals_.Update(ref, result); +} + void JavaVMExt::DumpReferenceTables(std::ostream& os) { Thread* self = Thread::Current(); { |