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