< prev index next >
src/share/vm/prims/jvmtiEnvBase.cpp
Print this page
@@ -1488,18 +1488,18 @@
_owned_monitors_list->append(jmsdi);
}
}
}
-GrowableArray<jobject>* JvmtiModuleClosure::_tbl = NULL;
+GrowableArray<OopHandle>* JvmtiModuleClosure::_tbl = NULL;
jvmtiError
JvmtiModuleClosure::get_all_modules(JvmtiEnv* env, jint* module_count_ptr, jobject** modules_ptr) {
ResourceMark rm;
MutexLocker ml(Module_lock);
- _tbl = new GrowableArray<jobject>(77);
+ _tbl = new GrowableArray<OopHandle>(77);
if (_tbl == NULL) {
return JVMTI_ERROR_OUT_OF_MEMORY;
}
// Iterate over all the modules loaded to the system.
@@ -1511,11 +1511,11 @@
jobject* array = (jobject*)env->jvmtiMalloc((jlong)(len * sizeof(jobject)));
if (array == NULL) {
return JVMTI_ERROR_OUT_OF_MEMORY;
}
for (jint idx = 0; idx < len; idx++) {
- array[idx] = _tbl->at(idx);
+ array[idx] = JNIHandles::make_local(Thread::current(), _tbl->at(idx).resolve());
}
_tbl = NULL;
*modules_ptr = array;
*module_count_ptr = len;
return JVMTI_ERROR_NONE;
< prev index next >