blob: cde459dab268bfd991738dd3dd7ff6d9b2b3b28e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
diff --git a/src/share/vm/prims/jvmtiGetLoadedClasses.cpp b/src/share/vm/prims/jvmtiGetLoadedClasses.cpp
index 70aede5..381868b 100644
--- a/src/share/vm/prims/jvmtiGetLoadedClasses.cpp
+++ b/src/share/vm/prims/jvmtiGetLoadedClasses.cpp
@@ -42,7 +42,13 @@
void do_klass(Klass* k) {
// Collect all jclasses
- _classStack.push((jclass) _env->jni_reference(k->java_mirror()));
+ // DCEVM : LoadedClassesClosure in dcevm7 iterates over classes from SystemDictionary therefore the class "k" is always
+ // the new version (SystemDictionary stores only new versions). But the LoadedClassesClosure's functionality was
+ // changed in java8 where jvmtiLoadedClasses collects all classes from all classloaders, therefore we
+ // must use new versions only.
+ if (k->new_version()==NULL) {
+ _classStack.push((jclass) _env->jni_reference(k->java_mirror()));
+ }
}
int extract(jclass* result_list) {
|