573 bool expand(size_t expand_bytes, WorkGang* pretouch_workers = NULL, double* expand_time_ms = NULL); 574 bool expand_single_region(uint node_index); 575 576 // Returns the PLAB statistics for a given destination. 577 inline G1EvacStats* alloc_buffer_stats(G1HeapRegionAttr dest); 578 579 // Determines PLAB size for a given destination. 580 inline size_t desired_plab_sz(G1HeapRegionAttr dest); 581 582 // Do anything common to GC's. 583 void gc_prologue(bool full); 584 void gc_epilogue(bool full); 585 586 // Does the given region fulfill remembered set based eager reclaim candidate requirements? 587 bool is_potential_eager_reclaim_candidate(HeapRegion* r) const; 588 589 // Modify the reclaim candidate set and test for presence. 590 // These are only valid for starts_humongous regions. 591 inline void set_humongous_reclaim_candidate(uint region, bool value); 592 inline bool is_humongous_reclaim_candidate(uint region); 593 594 // Remove from the reclaim candidate set. Also remove from the 595 // collection set so that later encounters avoid the slow path. 596 inline void set_humongous_is_live(oop obj); 597 598 // Register the given region to be part of the collection set. 599 inline void register_humongous_region_with_region_attr(uint index); 600 // Update region attributes table with information about all regions. 601 void register_regions_with_region_attr(); 602 // We register a region with the fast "in collection set" test. We 603 // simply set to true the array slot corresponding to this region. 604 void register_young_region_with_region_attr(HeapRegion* r) { 605 _region_attr.set_in_young(r->hrm_index()); 606 } 607 inline void register_region_with_region_attr(HeapRegion* r); 608 inline void register_old_region_with_region_attr(HeapRegion* r); 609 inline void register_optional_region_with_region_attr(HeapRegion* r); 610 611 void clear_region_attr(const HeapRegion* hr) { 612 _region_attr.clear(hr); 613 } 614 615 void clear_region_attr() { 616 _region_attr.clear(); 617 } 618 619 // Verify that the G1RegionAttr remset tracking corresponds to actual remset tracking 620 // for all regions. 621 void verify_region_attr_remset_update() PRODUCT_RETURN; | 573 bool expand(size_t expand_bytes, WorkGang* pretouch_workers = NULL, double* expand_time_ms = NULL); 574 bool expand_single_region(uint node_index); 575 576 // Returns the PLAB statistics for a given destination. 577 inline G1EvacStats* alloc_buffer_stats(G1HeapRegionAttr dest); 578 579 // Determines PLAB size for a given destination. 580 inline size_t desired_plab_sz(G1HeapRegionAttr dest); 581 582 // Do anything common to GC's. 583 void gc_prologue(bool full); 584 void gc_epilogue(bool full); 585 586 // Does the given region fulfill remembered set based eager reclaim candidate requirements? 587 bool is_potential_eager_reclaim_candidate(HeapRegion* r) const; 588 589 // Modify the reclaim candidate set and test for presence. 590 // These are only valid for starts_humongous regions. 591 inline void set_humongous_reclaim_candidate(uint region, bool value); 592 inline bool is_humongous_reclaim_candidate(uint region); 593 inline void set_has_humongous_reclaim_candidate(bool value); 594 595 // Remove from the reclaim candidate set. Also remove from the 596 // collection set so that later encounters avoid the slow path. 597 inline void set_humongous_is_live(oop obj); 598 599 // Register the given region to be part of the collection set. 600 inline void register_humongous_region_with_region_attr(uint index); 601 602 // We register a region with the fast "in collection set" test. We 603 // simply set to true the array slot corresponding to this region. 604 void register_young_region_with_region_attr(HeapRegion* r) { 605 _region_attr.set_in_young(r->hrm_index()); 606 } 607 inline void register_region_with_region_attr(HeapRegion* r); 608 inline void register_old_region_with_region_attr(HeapRegion* r); 609 inline void register_optional_region_with_region_attr(HeapRegion* r); 610 611 void clear_region_attr(const HeapRegion* hr) { 612 _region_attr.clear(hr); 613 } 614 615 void clear_region_attr() { 616 _region_attr.clear(); 617 } 618 619 // Verify that the G1RegionAttr remset tracking corresponds to actual remset tracking 620 // for all regions. 621 void verify_region_attr_remset_update() PRODUCT_RETURN; |