702 // 703 // NOTE: Only the "prev" marking information is guaranteed to be 704 // consistent most of the time, so most calls to this should use 705 // vo == UsePrevMarking. 706 // Currently, there is only one case where this is called with 707 // vo == UseNextMarking, which is to verify the "next" marking 708 // information at the end of remark. 709 // Currently there is only one place where this is called with 710 // vo == UseFullMarking, which is to verify the marking during a 711 // full GC. 712 void verify(VerifyOption vo, bool *failures) const; 713 714 // Override; it uses the "prev" marking information 715 virtual void verify() const; 716 717 void verify_rem_set(VerifyOption vo, bool *failures) const; 718 void verify_rem_set() const; 719 }; 720 721 // HeapRegionClosure is used for iterating over regions. 722 // Terminates the iteration when the "do_heap_region" method returns "true". 723 class HeapRegionClosure : public StackObj { 724 friend class HeapRegionManager; 725 friend class G1CollectionSet; 726 727 bool _is_complete; 728 void set_incomplete() { _is_complete = false; } 729 730 public: 731 HeapRegionClosure(): _is_complete(true) {} 732 733 // Typically called on each region until it returns true. 734 virtual bool do_heap_region(HeapRegion* r) = 0; 735 736 // True after iteration if the closure was applied to all heap regions 737 // and returned "false" in all cases. 738 bool is_complete() { return _is_complete; } 739 }; 740 741 #endif // SHARE_VM_GC_G1_HEAPREGION_HPP | 702 // 703 // NOTE: Only the "prev" marking information is guaranteed to be 704 // consistent most of the time, so most calls to this should use 705 // vo == UsePrevMarking. 706 // Currently, there is only one case where this is called with 707 // vo == UseNextMarking, which is to verify the "next" marking 708 // information at the end of remark. 709 // Currently there is only one place where this is called with 710 // vo == UseFullMarking, which is to verify the marking during a 711 // full GC. 712 void verify(VerifyOption vo, bool *failures) const; 713 714 // Override; it uses the "prev" marking information 715 virtual void verify() const; 716 717 void verify_rem_set(VerifyOption vo, bool *failures) const; 718 void verify_rem_set() const; 719 }; 720 721 // HeapRegionClosure is used for iterating over regions. 722 // Terminates the iteration when the "doHeapRegion" method returns "true". 723 class HeapRegionClosure : public StackObj { 724 friend class HeapRegionManager; 725 friend class G1CollectionSet; 726 727 bool _complete; 728 void incomplete() { _complete = false; } 729 730 public: 731 HeapRegionClosure(): _complete(true) {} 732 733 // Typically called on each region until it returns true. 734 virtual bool doHeapRegion(HeapRegion* r) = 0; 735 736 // True after iteration if the closure was applied to all heap regions 737 // and returned "false" in all cases. 738 bool complete() { return _complete; } 739 }; 740 741 #endif // SHARE_VM_GC_G1_HEAPREGION_HPP |