739
740 ShenandoahLiveData** _liveness_cache;
741
742 public:
743 // Return the marking context regardless of the completeness status.
744 inline ShenandoahMarkingContext* marking_context() const;
745
746 template<class T>
747 inline void marked_object_iterate(ShenandoahHeapRegion* region, T* cl);
748
749 template<class T>
750 inline void marked_object_iterate(ShenandoahHeapRegion* region, T* cl, HeapWord* limit);
751
752 template<class T>
753 inline void marked_object_oop_iterate(ShenandoahHeapRegion* region, T* cl, HeapWord* limit);
754
755 // SATB barriers hooks
756 inline bool requires_marking(const void* entry) const;
757
758 // Support for bitmap uncommits
759 bool commit_bitmap_slice(ShenandoahHeapRegion *r);
760 bool uncommit_bitmap_slice(ShenandoahHeapRegion *r);
761 bool is_bitmap_slice_committed(ShenandoahHeapRegion* r, bool skip_self = false);
762
763 // During concurrent reset, the control thread will zero out the mark bitmaps for committed regions.
764 // This cannot happen when the uncommit thread is simultaneously trying to uncommit regions and their bitmaps.
765 // To prevent these threads from working at the same time, we provide these methods for the control thread to
766 // prevent the uncommit thread from working while a collection cycle is in progress.
767
768 // Forbid uncommits (will stop and wait if regions are being uncommitted)
769 void forbid_uncommit();
770
771 // Allow the uncommit thread to process regions
772 void allow_uncommit();
773 #ifdef ASSERT
774 bool is_uncommit_in_progress();
775 #endif
776
777 // Liveness caching support
778 ShenandoahLiveData* get_liveness_cache(uint worker_id);
779 void flush_liveness_cache(uint worker_id);
780
|
739
740 ShenandoahLiveData** _liveness_cache;
741
742 public:
743 // Return the marking context regardless of the completeness status.
744 inline ShenandoahMarkingContext* marking_context() const;
745
746 template<class T>
747 inline void marked_object_iterate(ShenandoahHeapRegion* region, T* cl);
748
749 template<class T>
750 inline void marked_object_iterate(ShenandoahHeapRegion* region, T* cl, HeapWord* limit);
751
752 template<class T>
753 inline void marked_object_oop_iterate(ShenandoahHeapRegion* region, T* cl, HeapWord* limit);
754
755 // SATB barriers hooks
756 inline bool requires_marking(const void* entry) const;
757
758 // Support for bitmap uncommits
759 void commit_bitmap_slice(ShenandoahHeapRegion *r);
760 void uncommit_bitmap_slice(ShenandoahHeapRegion *r);
761 bool is_bitmap_region_special() { return _bitmap_region_special; }
762 bool is_bitmap_slice_committed(ShenandoahHeapRegion* r, bool skip_self = false);
763
764 // During concurrent reset, the control thread will zero out the mark bitmaps for committed regions.
765 // This cannot happen when the uncommit thread is simultaneously trying to uncommit regions and their bitmaps.
766 // To prevent these threads from working at the same time, we provide these methods for the control thread to
767 // prevent the uncommit thread from working while a collection cycle is in progress.
768
769 // Forbid uncommits (will stop and wait if regions are being uncommitted)
770 void forbid_uncommit();
771
772 // Allow the uncommit thread to process regions
773 void allow_uncommit();
774 #ifdef ASSERT
775 bool is_uncommit_in_progress();
776 #endif
777
778 // Liveness caching support
779 ShenandoahLiveData* get_liveness_cache(uint worker_id);
780 void flush_liveness_cache(uint worker_id);
781
|