aboutsummaryrefslogtreecommitdiffstats
path: root/hotspot/.hg/patches/jvmti-getLoadedClasses-java8.patch
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) {