src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp

Print this page
rev 5920 : 8035406: Improve data structure for Code Cache remembered sets
Summary: Change the code cache remembered sets data structure from a GrowableArray to a chunked list of nmethods. This makes the data structure more amenable to parallelization, and decreases freeing time.
Reviewed-by:
rev 5921 : 8027295: Free CSet takes ~50% of young pause time
Summary: Improve fast card cache iteration and avoid taking locks when freeing the collection set.
Reviewed-by:


 142   // objects.
 143   void scrub(CardTableModRefBS* ctbs, BitMap* region_bm, BitMap* card_bm);
 144 
 145   size_t occupied() const;
 146   size_t occ_fine() const;
 147   size_t occ_coarse() const;
 148   size_t occ_sparse() const;
 149 
 150   static jint n_coarsenings() { return _n_coarsenings; }
 151 
 152   // Returns size in bytes.
 153   // Not const because it takes a lock.
 154   size_t mem_size() const;
 155   static size_t static_mem_size();
 156   static size_t fl_mem_size();
 157 
 158   bool contains_reference(OopOrNarrowOopStar from) const;
 159   bool contains_reference_locked(OopOrNarrowOopStar from) const;
 160 
 161   void clear();

 162 
 163   // Specifically clear the from_card_cache.
 164   void clear_fcc();
 165 
 166   // "from_hr" is being cleared; remove any entries from it.
 167   void clear_incoming_entry(HeapRegion* from_hr);
 168 
 169   void do_cleanup_work(HRRSCleanupTask* hrrs_cleanup_task);
 170 
 171   // Declare the heap size (in # of regions) to the OtherRegionsTable.
 172   // (Uses it to initialize from_card_cache).
 173   static void init_from_card_cache(size_t max_regions);
 174 
 175   // Declares that only regions i s.t. 0 <= i < new_n_regs are in use.
 176   // Make sure any entries for higher regions are invalid.
 177   static void shrink_from_card_cache(size_t new_n_regs);
 178 
 179   static void print_from_card_cache();
 180 };
 181 




 142   // objects.
 143   void scrub(CardTableModRefBS* ctbs, BitMap* region_bm, BitMap* card_bm);
 144 
 145   size_t occupied() const;
 146   size_t occ_fine() const;
 147   size_t occ_coarse() const;
 148   size_t occ_sparse() const;
 149 
 150   static jint n_coarsenings() { return _n_coarsenings; }
 151 
 152   // Returns size in bytes.
 153   // Not const because it takes a lock.
 154   size_t mem_size() const;
 155   static size_t static_mem_size();
 156   static size_t fl_mem_size();
 157 
 158   bool contains_reference(OopOrNarrowOopStar from) const;
 159   bool contains_reference_locked(OopOrNarrowOopStar from) const;
 160 
 161   void clear();
 162   void clear_locked();
 163 
 164   // Specifically clear the from_card_cache.
 165   void clear_fcc();
 166 
 167   // "from_hr" is being cleared; remove any entries from it.
 168   void clear_incoming_entry(HeapRegion* from_hr);
 169 
 170   void do_cleanup_work(HRRSCleanupTask* hrrs_cleanup_task);
 171 
 172   // Declare the heap size (in # of regions) to the OtherRegionsTable.
 173   // (Uses it to initialize from_card_cache).
 174   static void init_from_card_cache(size_t max_regions);
 175 
 176   // Declares that only regions i s.t. 0 <= i < new_n_regs are in use.
 177   // Make sure any entries for higher regions are invalid.
 178   static void shrink_from_card_cache(size_t new_n_regs);
 179 
 180   static void print_from_card_cache();
 181 };
 182