613 // (Rounds up to a G1HeapRegion boundary.)
614 bool expand(size_t expand_bytes, WorkerThreads* pretouch_workers);
615 bool expand_single_region(uint node_index);
616
617 // Returns the PLAB statistics for a given destination.
618 inline G1EvacStats* alloc_buffer_stats(G1HeapRegionAttr dest);
619
620 // Determines PLAB size for a given destination.
621 inline size_t desired_plab_sz(G1HeapRegionAttr dest);
622 // Clamp the given PLAB word size to allowed values. Prevents humongous PLAB sizes
623 // for two reasons:
624 // * PLABs are allocated using a similar paths as oops, but should
625 // never be in a humongous region
626 // * Allowing humongous PLABs needlessly churns the region free lists
627 inline size_t clamp_plab_size(size_t value) const;
628
629 // Do anything common to GC's.
630 void gc_prologue(bool full);
631 void gc_epilogue(bool full);
632
633 // Does the given region fulfill remembered set based eager reclaim candidate requirements?
634 bool is_potential_eager_reclaim_candidate(G1HeapRegion* r) const;
635
636 inline bool is_humongous_reclaim_candidate(uint region);
637
638 // Remove from the reclaim candidate set. Also remove from the
639 // collection set so that later encounters avoid the slow path.
640 inline void set_humongous_is_live(oop obj);
641
642 // Register the given region to be part of the collection set.
643 inline void register_humongous_candidate_region_with_region_attr(uint index);
644
645 void set_humongous_metadata(G1HeapRegion* first_hr,
646 uint num_regions,
647 size_t word_size,
648 bool update_remsets);
649
650 // The following methods update the region attribute table, i.e. a compact
651 // representation of per-region information that is regularly accessed
652 // during GC.
|
613 // (Rounds up to a G1HeapRegion boundary.)
614 bool expand(size_t expand_bytes, WorkerThreads* pretouch_workers);
615 bool expand_single_region(uint node_index);
616
617 // Returns the PLAB statistics for a given destination.
618 inline G1EvacStats* alloc_buffer_stats(G1HeapRegionAttr dest);
619
620 // Determines PLAB size for a given destination.
621 inline size_t desired_plab_sz(G1HeapRegionAttr dest);
622 // Clamp the given PLAB word size to allowed values. Prevents humongous PLAB sizes
623 // for two reasons:
624 // * PLABs are allocated using a similar paths as oops, but should
625 // never be in a humongous region
626 // * Allowing humongous PLABs needlessly churns the region free lists
627 inline size_t clamp_plab_size(size_t value) const;
628
629 // Do anything common to GC's.
630 void gc_prologue(bool full);
631 void gc_epilogue(bool full);
632
633 // Can concurrent mark process this object immediately, i.e. mark as live without the need
634 // of pushing it on the mark stack (to process references)?
635 // Used to keep objects that are potentially eagerly reclaimed out of the mark stack.
636 // Its klass may still need to be handled.
637 inline bool can_be_marked_through_immediately(oop obj) const;
638 // Does the given region fulfill remembered set based eager reclaim candidate requirements?
639 bool is_potential_eager_reclaim_candidate(G1HeapRegion* r) const;
640
641 inline bool is_humongous_reclaim_candidate(uint region);
642
643 // Remove from the reclaim candidate set. Also remove from the
644 // collection set so that later encounters avoid the slow path.
645 inline void set_humongous_is_live(oop obj);
646
647 // Register the given region to be part of the collection set.
648 inline void register_humongous_candidate_region_with_region_attr(uint index);
649
650 void set_humongous_metadata(G1HeapRegion* first_hr,
651 uint num_regions,
652 size_t word_size,
653 bool update_remsets);
654
655 // The following methods update the region attribute table, i.e. a compact
656 // representation of per-region information that is regularly accessed
657 // during GC.
|