comparison src/share/vm/code/nmethod.cpp @ 23463:5cece4584b8e

8058563: InstanceKlass::_dependencies list isn't cleared from empty nmethodBucket entries Reviewed-by: mgerdin, vlivanov
author stefank
date Thu, 12 Nov 2015 09:53:17 +0100
parents be740540f60c
children b5f3a471e646
comparison
equal deleted inserted replaced
23462:f46ffa934a46 23463:5cece4584b8e
1617 if (klass == NULL) continue; // ignore things like evol_method 1617 if (klass == NULL) continue; // ignore things like evol_method
1618 1618
1619 // During GC the is_alive closure is non-NULL, and is used to 1619 // During GC the is_alive closure is non-NULL, and is used to
1620 // determine liveness of dependees that need to be updated. 1620 // determine liveness of dependees that need to be updated.
1621 if (is_alive == NULL || klass->is_loader_alive(is_alive)) { 1621 if (is_alive == NULL || klass->is_loader_alive(is_alive)) {
1622 InstanceKlass::cast(klass)->remove_dependent_nmethod(this); 1622 // The GC defers deletion of this entry, since there might be multiple threads
1623 // iterating over the _dependencies graph. Other call paths are single-threaded
1624 // and may delete it immediately.
1625 bool delete_immediately = is_alive == NULL;
1626 InstanceKlass::cast(klass)->remove_dependent_nmethod(this, delete_immediately);
1623 } 1627 }
1624 } 1628 }
1625 } 1629 }
1626 } 1630 }
1627 1631