1640 ConcurrentG1Refine* concurrent_g1_refine() const { return _cg1r; }
1641
1642 // The dirty cards region list is used to record a subset of regions
1643 // whose cards need clearing. The list if populated during the
1644 // remembered set scanning and drained during the card table
1645 // cleanup. Although the methods are reentrant, population/draining
1646 // phases must not overlap. For synchronization purposes the last
1647 // element on the list points to itself.
1648 HeapRegion* _dirty_cards_region_list;
1649 void push_dirty_cards_region(HeapRegion* hr);
1650 HeapRegion* pop_dirty_cards_region();
1651
1652 // Optimized nmethod scanning support routines
1653
1654 // Register the given nmethod with the G1 heap.
1655 virtual void register_nmethod(nmethod* nm);
1656
1657 // Unregister the given nmethod from the G1 heap.
1658 virtual void unregister_nmethod(nmethod* nm);
1659
1660 // Migrate the nmethods in the code root lists of the regions
1661 // in the collection set to regions in to-space. In the event
1662 // of an evacuation failure, nmethods that reference objects
1663 // that were not successfully evacuated are not migrated.
1664 void migrate_strong_code_roots();
1665
1666 // Free up superfluous code root memory.
1667 void purge_code_root_memory();
1668
1669 // Rebuild the strong code root lists for each region
1670 // after a full GC.
1671 void rebuild_strong_code_roots();
1672
1673 // Delete entries for dead interned string and clean up unreferenced symbols
1674 // in symbol table, possibly in parallel.
1675 void unlink_string_and_symbol_table(BoolObjectClosure* is_alive, bool unlink_strings = true, bool unlink_symbols = true);
1676
1677 // Parallel phase of unloading/cleaning after G1 concurrent mark.
1678 void parallel_cleaning(BoolObjectClosure* is_alive, bool process_strings, bool process_symbols, bool class_unloading_occurred);
1679
1680 // Redirty logged cards in the refinement queue.
1681 void redirty_logged_cards();
1682 // Verification
1683
1684 // The following is just to alert the verification code
1685 // that a full collection has occurred and that the
|
1640 ConcurrentG1Refine* concurrent_g1_refine() const { return _cg1r; }
1641
1642 // The dirty cards region list is used to record a subset of regions
1643 // whose cards need clearing. The list if populated during the
1644 // remembered set scanning and drained during the card table
1645 // cleanup. Although the methods are reentrant, population/draining
1646 // phases must not overlap. For synchronization purposes the last
1647 // element on the list points to itself.
1648 HeapRegion* _dirty_cards_region_list;
1649 void push_dirty_cards_region(HeapRegion* hr);
1650 HeapRegion* pop_dirty_cards_region();
1651
1652 // Optimized nmethod scanning support routines
1653
1654 // Register the given nmethod with the G1 heap.
1655 virtual void register_nmethod(nmethod* nm);
1656
1657 // Unregister the given nmethod from the G1 heap.
1658 virtual void unregister_nmethod(nmethod* nm);
1659
1660 // Free up superfluous code root memory.
1661 void purge_code_root_memory();
1662
1663 // Rebuild the strong code root lists for each region
1664 // after a full GC.
1665 void rebuild_strong_code_roots();
1666
1667 // Delete entries for dead interned string and clean up unreferenced symbols
1668 // in symbol table, possibly in parallel.
1669 void unlink_string_and_symbol_table(BoolObjectClosure* is_alive, bool unlink_strings = true, bool unlink_symbols = true);
1670
1671 // Parallel phase of unloading/cleaning after G1 concurrent mark.
1672 void parallel_cleaning(BoolObjectClosure* is_alive, bool process_strings, bool process_symbols, bool class_unloading_occurred);
1673
1674 // Redirty logged cards in the refinement queue.
1675 void redirty_logged_cards();
1676 // Verification
1677
1678 // The following is just to alert the verification code
1679 // that a full collection has occurred and that the
|