diff src/share/vm/classfile/loaderConstraints.cpp @ 2244:4f26f535a225

6354181: nsk.logging.stress.threads.scmhml001 fails assertion in "src/share/vm/oops/instanceKlass.cpp, 111" Reviewed-by: jrose, acorn
author never
date Mon, 31 Jan 2011 17:48:21 -0800
parents 3582bf76420e
children 1d1603768966
line wrap: on
line diff
--- a/src/share/vm/classfile/loaderConstraints.cpp	Thu Jan 27 16:11:27 2011 -0800
+++ b/src/share/vm/classfile/loaderConstraints.cpp	Mon Jan 31 17:48:21 2011 -0800
@@ -322,8 +322,14 @@
 klassOop LoaderConstraintTable::find_constrained_klass(Symbol* name,
                                                        Handle loader) {
   LoaderConstraintEntry *p = *(find_loader_constraint(name, loader));
-  if (p != NULL && p->klass() != NULL)
+  if (p != NULL && p->klass() != NULL) {
+    if (Klass::cast(p->klass())->oop_is_instance() && !instanceKlass::cast(p->klass())->is_loaded()) {
+      // Only return fully loaded classes.  Classes found through the
+      // constraints might still be in the process of loading.
+      return NULL;
+    }
     return p->klass();
+  }
 
   // No constraints, or else no klass loaded yet.
   return NULL;