519 |
519 |
520 // Follow system dictionary roots and unload classes |
520 // Follow system dictionary roots and unload classes |
521 bool purged_class = SystemDictionary::do_unloading(is_alive_closure()); |
521 bool purged_class = SystemDictionary::do_unloading(is_alive_closure()); |
522 |
522 |
523 // Follow code cache roots |
523 // Follow code cache roots |
524 CodeCache::do_unloading(is_alive_closure(), mark_and_push_closure(), |
524 CodeCache::do_unloading(is_alive_closure(), purged_class); |
525 purged_class); |
|
526 follow_stack(); // Flush marking stack |
525 follow_stack(); // Flush marking stack |
527 |
526 |
528 // Update subklass/sibling/implementor links of live klasses |
527 // Update subklass/sibling/implementor links of live klasses |
529 Klass::clean_weak_klass_links(&is_alive); |
528 Klass::clean_weak_klass_links(&is_alive); |
530 assert(_marking_stack.is_empty(), "just drained"); |
529 assert(_marking_stack.is_empty(), "just drained"); |