changeset 8627:3b6d2d60ff75

8180881: Better packaging of deserialization Reviewed-by: chegar, acorn
author robm
date Fri, 27 Oct 2017 20:39:22 +0100
parents 1310ecbe61f3
children efda392b711e
files src/share/vm/prims/jvm.cpp
diffstat 1 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/prims/jvm.cpp	Tue Oct 03 23:29:49 2017 -0700
+++ b/src/share/vm/prims/jvm.cpp	Fri Oct 27 20:39:22 2017 +0100
@@ -3654,15 +3654,16 @@
 JVM_END
 
 
-// Return the first non-null class loader up the execution stack, or null
-// if only code from the null class loader is on the stack.
+// Returns first non-privileged class loader on the stack (excluding reflection
+// generated frames) or null if only classes loaded by the boot class loader
+// and extension class loader are found on the stack.
 
 JVM_ENTRY(jobject, JVM_LatestUserDefinedLoader(JNIEnv *env))
   for (vframeStream vfst(thread); !vfst.at_end(); vfst.next()) {
     // UseNewReflection
     vfst.skip_reflection_related_frames(); // Only needed for 1.4 reflection
     oop loader = vfst.method()->method_holder()->class_loader();
-    if (loader != NULL) {
+    if (loader != NULL && !SystemDictionary::is_ext_class_loader(loader)) {
       return JNIHandles::make_local(env, loader);
     }
   }