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