< prev index next >

src/share/vm/code/nmethod.cpp

Print this page

        

*** 1617,1627 **** if (klass == NULL) continue; // ignore things like evol_method // During GC the is_alive closure is non-NULL, and is used to // determine liveness of dependees that need to be updated. if (is_alive == NULL || klass->is_loader_alive(is_alive)) { ! InstanceKlass::cast(klass)->remove_dependent_nmethod(this); } } } } --- 1617,1631 ---- if (klass == NULL) continue; // ignore things like evol_method // During GC the is_alive closure is non-NULL, and is used to // determine liveness of dependees that need to be updated. if (is_alive == NULL || klass->is_loader_alive(is_alive)) { ! // The GC defers deletion of this entry, since there might be multiple threads ! // iterating over the _dependencies graph. Other call paths are single-threaded ! // and may delete it immediately. ! bool delete_immediately = is_alive == NULL; ! InstanceKlass::cast(klass)->remove_dependent_nmethod(this, delete_immediately); } } } }
< prev index next >