556 inline void set_humongous_reclaim_candidate(uint region, bool value);
557 inline bool is_humongous_reclaim_candidate(uint region);
558
559 // Remove from the reclaim candidate set. Also remove from the
560 // collection set so that later encounters avoid the slow path.
561 inline void set_humongous_is_live(oop obj);
562
563 // Register the given region to be part of the collection set.
564 inline void register_humongous_region_with_cset(uint index);
565 // Register regions with humongous objects (actually on the start region) in
566 // the in_cset_fast_test table.
567 void register_humongous_regions_with_cset();
568 // We register a region with the fast "in collection set" test. We
569 // simply set to true the array slot corresponding to this region.
570 void register_young_region_with_cset(HeapRegion* r) {
571 _in_cset_fast_test.set_in_young(r->hrm_index());
572 }
573 void register_old_region_with_cset(HeapRegion* r) {
574 _in_cset_fast_test.set_in_old(r->hrm_index());
575 }
576 void clear_in_cset(const HeapRegion* hr) {
577 _in_cset_fast_test.clear(hr);
578 }
579
580 void clear_cset_fast_test() {
581 _in_cset_fast_test.clear();
582 }
583
584 bool is_user_requested_concurrent_full_gc(GCCause::Cause cause);
585
586 // This is called at the start of either a concurrent cycle or a Full
587 // GC to update the number of old marking cycles started.
588 void increment_old_marking_cycles_started();
589
590 // This is called at the end of either a concurrent cycle or a Full
591 // GC to update the number of old marking cycles completed. Those two
592 // can happen in a nested fashion, i.e., we start a concurrent
593 // cycle, a Full GC happens half-way through it which ends first,
594 // and then the cycle notices that a Full GC happened and ends
595 // too. The concurrent parameter is a boolean to help us do a bit
|
556 inline void set_humongous_reclaim_candidate(uint region, bool value);
557 inline bool is_humongous_reclaim_candidate(uint region);
558
559 // Remove from the reclaim candidate set. Also remove from the
560 // collection set so that later encounters avoid the slow path.
561 inline void set_humongous_is_live(oop obj);
562
563 // Register the given region to be part of the collection set.
564 inline void register_humongous_region_with_cset(uint index);
565 // Register regions with humongous objects (actually on the start region) in
566 // the in_cset_fast_test table.
567 void register_humongous_regions_with_cset();
568 // We register a region with the fast "in collection set" test. We
569 // simply set to true the array slot corresponding to this region.
570 void register_young_region_with_cset(HeapRegion* r) {
571 _in_cset_fast_test.set_in_young(r->hrm_index());
572 }
573 void register_old_region_with_cset(HeapRegion* r) {
574 _in_cset_fast_test.set_in_old(r->hrm_index());
575 }
576 inline void register_ext_region_with_cset(HeapRegion* r) {
577 _in_cset_fast_test.set_ext(r->hrm_index());
578 }
579 void clear_in_cset(const HeapRegion* hr) {
580 _in_cset_fast_test.clear(hr);
581 }
582
583 void clear_cset_fast_test() {
584 _in_cset_fast_test.clear();
585 }
586
587 bool is_user_requested_concurrent_full_gc(GCCause::Cause cause);
588
589 // This is called at the start of either a concurrent cycle or a Full
590 // GC to update the number of old marking cycles started.
591 void increment_old_marking_cycles_started();
592
593 // This is called at the end of either a concurrent cycle or a Full
594 // GC to update the number of old marking cycles completed. Those two
595 // can happen in a nested fashion, i.e., we start a concurrent
596 // cycle, a Full GC happens half-way through it which ends first,
597 // and then the cycle notices that a Full GC happened and ends
598 // too. The concurrent parameter is a boolean to help us do a bit
|