12345678910111213141516171819 |
- 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) {
|