src/share/vm/classfile/loaderConstraints.cpp

changeset 2551
4f26f535a225
parent 2497
3582bf76420e
child 2708
1d1603768966
     1.1 --- a/src/share/vm/classfile/loaderConstraints.cpp	Thu Jan 27 16:11:27 2011 -0800
     1.2 +++ b/src/share/vm/classfile/loaderConstraints.cpp	Mon Jan 31 17:48:21 2011 -0800
     1.3 @@ -322,8 +322,14 @@
     1.4  klassOop LoaderConstraintTable::find_constrained_klass(Symbol* name,
     1.5                                                         Handle loader) {
     1.6    LoaderConstraintEntry *p = *(find_loader_constraint(name, loader));
     1.7 -  if (p != NULL && p->klass() != NULL)
     1.8 +  if (p != NULL && p->klass() != NULL) {
     1.9 +    if (Klass::cast(p->klass())->oop_is_instance() && !instanceKlass::cast(p->klass())->is_loaded()) {
    1.10 +      // Only return fully loaded classes.  Classes found through the
    1.11 +      // constraints might still be in the process of loading.
    1.12 +      return NULL;
    1.13 +    }
    1.14      return p->klass();
    1.15 +  }
    1.16  
    1.17    // No constraints, or else no klass loaded yet.
    1.18    return NULL;

mercurial