1622
1623 // The dirty cards region list is used to record a subset of regions
1624 // whose cards need clearing. The list if populated during the
1625 // remembered set scanning and drained during the card table
1626 // cleanup. Although the methods are reentrant, population/draining
1627 // phases must not overlap. For synchronization purposes the last
1628 // element on the list points to itself.
1629 HeapRegion* _dirty_cards_region_list;
1630 void push_dirty_cards_region(HeapRegion* hr);
1631 HeapRegion* pop_dirty_cards_region();
1632
1633 // Optimized nmethod scanning support routines
1634
1635 // Register the given nmethod with the G1 heap
1636 virtual void register_nmethod(nmethod* nm);
1637
1638 // Unregister the given nmethod from the G1 heap
1639 virtual void unregister_nmethod(nmethod* nm);
1640
1641 // Migrate the nmethods in the code root lists of the regions
1642 // in the collection set to regions in to-space
1643 void migrate_strong_code_roots();
1644
1645 // During an initial mark pause, mark the strong code roots that
1646 // point into the heap.
1647 void mark_strong_code_roots(uint worker_id);
1648
1649 // Rebuild the stong code root lists for each region
1650 // after a full GC
1651 void rebuild_strong_code_roots();
1652
1653 // Verification
1654
1655 // The following is just to alert the verification code
1656 // that a full collection has occurred and that the
1657 // remembered sets are no longer up to date.
1658 bool _full_collection;
1659 void set_full_collection() { _full_collection = true;}
1660 void clear_full_collection() {_full_collection = false;}
1661 bool full_collection() {return _full_collection;}
1662
1663 // Perform any cleanup actions necessary before allowing a verification.
1664 virtual void prepare_for_verify();
1665
1666 // Perform verification.
|
1622
1623 // The dirty cards region list is used to record a subset of regions
1624 // whose cards need clearing. The list if populated during the
1625 // remembered set scanning and drained during the card table
1626 // cleanup. Although the methods are reentrant, population/draining
1627 // phases must not overlap. For synchronization purposes the last
1628 // element on the list points to itself.
1629 HeapRegion* _dirty_cards_region_list;
1630 void push_dirty_cards_region(HeapRegion* hr);
1631 HeapRegion* pop_dirty_cards_region();
1632
1633 // Optimized nmethod scanning support routines
1634
1635 // Register the given nmethod with the G1 heap
1636 virtual void register_nmethod(nmethod* nm);
1637
1638 // Unregister the given nmethod from the G1 heap
1639 virtual void unregister_nmethod(nmethod* nm);
1640
1641 // Migrate the nmethods in the code root lists of the regions
1642 // in the collection set to regions in to-space. In the event
1643 // of an evacuation failure, nmethods that reference objects
1644 // that were not successfullly evacuated are not migrated.
1645 void migrate_strong_code_roots();
1646
1647 // During an initial mark pause, mark all the code roots that
1648 // point into regions *not* in the collection set.
1649 void mark_strong_code_roots(uint worker_id);
1650
1651 // Rebuild the stong code root lists for each region
1652 // after a full GC
1653 void rebuild_strong_code_roots();
1654
1655 // Verification
1656
1657 // The following is just to alert the verification code
1658 // that a full collection has occurred and that the
1659 // remembered sets are no longer up to date.
1660 bool _full_collection;
1661 void set_full_collection() { _full_collection = true;}
1662 void clear_full_collection() {_full_collection = false;}
1663 bool full_collection() {return _full_collection;}
1664
1665 // Perform any cleanup actions necessary before allowing a verification.
1666 virtual void prepare_for_verify();
1667
1668 // Perform verification.
|