< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp

Print this page

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 
< prev index next >