579
580 _pending_removal = pending_removal;
581 }
582
583 HeapRegion* get_next_young_region() { return _next_young_region; }
584 void set_next_young_region(HeapRegion* hr) {
585 _next_young_region = hr;
586 }
587
588 HeapRegion* get_next_dirty_cards_region() const { return _next_dirty_cards_region; }
589 HeapRegion** next_dirty_cards_region_addr() { return &_next_dirty_cards_region; }
590 void set_next_dirty_cards_region(HeapRegion* hr) { _next_dirty_cards_region = hr; }
591 bool is_on_dirty_cards_region_list() const { return get_next_dirty_cards_region() != NULL; }
592
593 HeapWord* orig_end() { return _orig_end; }
594
595 // Allows logical separation between objects allocated before and after.
596 void save_marks();
597
598 // Reset HR stuff to default values.
599 void hr_clear(bool par, bool clear_space);
600 void par_clear();
601
602 // Get the start of the unmarked area in this region.
603 HeapWord* prev_top_at_mark_start() const { return _prev_top_at_mark_start; }
604 HeapWord* next_top_at_mark_start() const { return _next_top_at_mark_start; }
605
606 // Apply "cl->do_oop" to (the addresses of) all reference fields in objects
607 // allocated in the current region before the last call to "save_mark".
608 void oop_before_save_marks_iterate(ExtendedOopClosure* cl);
609
610 // Note the start or end of marking. This tells the heap region
611 // that the collector is about to start or has finished (concurrently)
612 // marking the heap.
613
614 // Notify the region that concurrent marking is starting. Initialize
615 // all fields related to the next marking info.
616 inline void note_start_of_marking();
617
618 // Notify the region that concurrent marking has finished. Copy the
619 // (now finalized) next marking info fields into the prev marking
|
579
580 _pending_removal = pending_removal;
581 }
582
583 HeapRegion* get_next_young_region() { return _next_young_region; }
584 void set_next_young_region(HeapRegion* hr) {
585 _next_young_region = hr;
586 }
587
588 HeapRegion* get_next_dirty_cards_region() const { return _next_dirty_cards_region; }
589 HeapRegion** next_dirty_cards_region_addr() { return &_next_dirty_cards_region; }
590 void set_next_dirty_cards_region(HeapRegion* hr) { _next_dirty_cards_region = hr; }
591 bool is_on_dirty_cards_region_list() const { return get_next_dirty_cards_region() != NULL; }
592
593 HeapWord* orig_end() { return _orig_end; }
594
595 // Allows logical separation between objects allocated before and after.
596 void save_marks();
597
598 // Reset HR stuff to default values.
599 void hr_clear(bool par, bool clear_space, bool locked = false);
600 void par_clear();
601
602 // Get the start of the unmarked area in this region.
603 HeapWord* prev_top_at_mark_start() const { return _prev_top_at_mark_start; }
604 HeapWord* next_top_at_mark_start() const { return _next_top_at_mark_start; }
605
606 // Apply "cl->do_oop" to (the addresses of) all reference fields in objects
607 // allocated in the current region before the last call to "save_mark".
608 void oop_before_save_marks_iterate(ExtendedOopClosure* cl);
609
610 // Note the start or end of marking. This tells the heap region
611 // that the collector is about to start or has finished (concurrently)
612 // marking the heap.
613
614 // Notify the region that concurrent marking is starting. Initialize
615 // all fields related to the next marking info.
616 inline void note_start_of_marking();
617
618 // Notify the region that concurrent marking has finished. Copy the
619 // (now finalized) next marking info fields into the prev marking
|