< prev index next >

src/hotspot/share/gc/shared/blockOffsetTable.hpp

Print this page
rev 49911 : imported patch removeAllGCs


 136   friend class BlockOffsetArrayNonContigSpace;
 137   friend class BlockOffsetArrayContigSpace;
 138   friend class VMStructs;
 139 
 140  private:
 141   bool _init_to_zero;
 142 
 143   // The reserved region covered by the shared array.
 144   MemRegion _reserved;
 145 
 146   // End of the current committed region.
 147   HeapWord* _end;
 148 
 149   // Array for keeping offsets for retrieving object start fast given an
 150   // address.
 151   VirtualSpace _vs;
 152   u_char* _offset_array;          // byte array keeping backwards offsets
 153 
 154   void fill_range(size_t start, size_t num_cards, u_char offset) {
 155     void* start_ptr = &_offset_array[start];
 156 #if INCLUDE_ALL_GCS
 157     // If collector is concurrent, special handling may be needed.
 158     assert(!UseG1GC, "Shouldn't be here when using G1");

 159     if (UseConcMarkSweepGC) {
 160       memset_with_concurrent_readers(start_ptr, offset, num_cards);
 161       return;
 162     }
 163 #endif // INCLUDE_ALL_GCS
 164     memset(start_ptr, offset, num_cards);
 165   }
 166 
 167  protected:
 168   // Bounds checking accessors:
 169   // For performance these have to devolve to array accesses in product builds.
 170   u_char offset_array(size_t index) const {
 171     assert(index < _vs.committed_size(), "index out of range");
 172     return _offset_array[index];
 173   }
 174   // An assertion-checking helper method for the set_offset_array() methods below.
 175   void check_reducing_assertion(bool reducing);
 176 
 177   void set_offset_array(size_t index, u_char offset, bool reducing = false) {
 178     check_reducing_assertion(reducing);
 179     assert(index < _vs.committed_size(), "index out of range");
 180     assert(!reducing || _offset_array[index] >= offset, "Not reducing");
 181     _offset_array[index] = offset;
 182   }
 183 




 136   friend class BlockOffsetArrayNonContigSpace;
 137   friend class BlockOffsetArrayContigSpace;
 138   friend class VMStructs;
 139 
 140  private:
 141   bool _init_to_zero;
 142 
 143   // The reserved region covered by the shared array.
 144   MemRegion _reserved;
 145 
 146   // End of the current committed region.
 147   HeapWord* _end;
 148 
 149   // Array for keeping offsets for retrieving object start fast given an
 150   // address.
 151   VirtualSpace _vs;
 152   u_char* _offset_array;          // byte array keeping backwards offsets
 153 
 154   void fill_range(size_t start, size_t num_cards, u_char offset) {
 155     void* start_ptr = &_offset_array[start];

 156     // If collector is concurrent, special handling may be needed.
 157     G1GC_ONLY(assert(!UseG1GC, "Shouldn't be here when using G1");)
 158 #if INCLUDE_CMSGC
 159     if (UseConcMarkSweepGC) {
 160       memset_with_concurrent_readers(start_ptr, offset, num_cards);
 161       return;
 162     }
 163 #endif // INCLUDE_CMSGC
 164     memset(start_ptr, offset, num_cards);
 165   }
 166 
 167  protected:
 168   // Bounds checking accessors:
 169   // For performance these have to devolve to array accesses in product builds.
 170   u_char offset_array(size_t index) const {
 171     assert(index < _vs.committed_size(), "index out of range");
 172     return _offset_array[index];
 173   }
 174   // An assertion-checking helper method for the set_offset_array() methods below.
 175   void check_reducing_assertion(bool reducing);
 176 
 177   void set_offset_array(size_t index, u_char offset, bool reducing = false) {
 178     check_reducing_assertion(reducing);
 179     assert(index < _vs.committed_size(), "index out of range");
 180     assert(!reducing || _offset_array[index] >= offset, "Not reducing");
 181     _offset_array[index] = offset;
 182   }
 183 


< prev index next >