OSDN Git Service

Revert "ART: Temporarily use global references for GetLoadedClasses"
authorAndreas Gampe <agampe@google.com>
Tue, 25 Oct 2016 16:55:53 +0000 (09:55 -0700)
committerAndreas Gampe <agampe@google.com>
Tue, 25 Oct 2016 16:55:58 +0000 (09:55 -0700)
This reverts commit d2d0353de9e5c10f2a4a9ff2102d2b777c134a37.

The IndirectReferenceTable now allows resizing for local references.

Bug: 31684578
Bug: 32125344
Test: m test-art-host
Change-Id: I47dab19eb7ae66fc7d55d202a13a87f508c35e03

runtime/openjdkjvmti/heap.cc
test/907-get-loaded-classes/get_loaded_classes.cc

index decbfc9..1799e19 100644 (file)
@@ -21,7 +21,6 @@
 #include "base/mutex.h"
 #include "class_linker.h"
 #include "gc/heap.h"
-#include "java_vm_ext.h"
 #include "jni_env_ext.h"
 #include "mirror/class.h"
 #include "object_callbacks.h"
@@ -179,8 +178,7 @@ jvmtiError HeapUtil::GetLoadedClasses(jvmtiEnv* env,
 
     bool operator()(art::ObjPtr<art::mirror::Class> klass)
         OVERRIDE REQUIRES_SHARED(art::Locks::mutator_lock_) {
-      art::JNIEnvExt* jni_env = self_->GetJniEnv();
-      classes_.push_back(reinterpret_cast<jclass>(jni_env->vm->AddGlobalRef(self_, klass)));
+      classes_.push_back(self_->GetJniEnv()->AddLocalReference<jclass>(klass));
       return true;
     }
 
index 9ceefcb..0e09d1b 100644 (file)
@@ -70,7 +70,7 @@ extern "C" JNIEXPORT jobjectArray JNICALL Java_Main_getLoadedClasses(
   // 1) Free the local references.
   // 2) Deallocate.
   for (size_t i = 0; i < static_cast<size_t>(count); ++i) {
-    env->DeleteGlobalRef(classes[i]);
+    env->DeleteLocalRef(classes[i]);
   }
   jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(classes));