< prev index next >

src/share/vm/gc/g1/g1BlockOffsetTable.hpp

Print this page

        

*** 24,33 **** --- 24,34 ---- #ifndef SHARE_VM_GC_G1_G1BLOCKOFFSETTABLE_HPP #define SHARE_VM_GC_G1_G1BLOCKOFFSETTABLE_HPP #include "gc/g1/g1RegionToSpaceMapper.hpp" + #include "gc/shared/blockOffsetTable.hpp" #include "memory/memRegion.hpp" #include "memory/virtualspace.hpp" #include "utilities/globalDefinitions.hpp" // Forward declarations
*** 52,64 **** // Array for keeping offsets for retrieving object start fast given an // address. u_char* _offset_array; // byte array keeping backwards offsets void check_offset(size_t offset, const char* msg) const { ! assert(offset <= N_words, "%s - offset: " SIZE_FORMAT ", N_words: %u", ! msg, offset, (uint)N_words); } // Bounds checking accessors: // For performance these have to devolve to array accesses in product builds. inline u_char offset_array(size_t index) const; --- 53,65 ---- // Array for keeping offsets for retrieving object start fast given an // address. u_char* _offset_array; // byte array keeping backwards offsets void check_offset(size_t offset, const char* msg) const { ! assert(offset <= BOTConstants::N_words, "%s - offset: " SIZE_FORMAT ", N_words: %u", ! msg, offset, BOTConstants::N_words); } // Bounds checking accessors: // For performance these have to devolve to array accesses in product builds. inline u_char offset_array(size_t index) const;
*** 80,105 **** public: // Return the number of slots needed for an offset array // that covers mem_region_words words. static size_t compute_size(size_t mem_region_words) { ! size_t number_of_slots = (mem_region_words / N_words); return ReservedSpace::allocation_align_size_up(number_of_slots); } // Returns how many bytes of the heap a single byte of the BOT corresponds to. static size_t heap_map_factor() { ! return N_bytes; } - enum SomePublicConstants { - LogN = 9, - LogN_words = LogN - LogHeapWordSize, - N_bytes = 1 << LogN, - N_words = 1 << LogN_words - }; - // Initialize the Block Offset Table to cover the memory region passed // in the heap parameter. G1BlockOffsetTable(MemRegion heap, G1RegionToSpaceMapper* storage); // Return the appropriate index into "_offset_array" for "p". --- 81,99 ---- public: // Return the number of slots needed for an offset array // that covers mem_region_words words. static size_t compute_size(size_t mem_region_words) { ! size_t number_of_slots = (mem_region_words / BOTConstants::N_words); return ReservedSpace::allocation_align_size_up(number_of_slots); } // Returns how many bytes of the heap a single byte of the BOT corresponds to. static size_t heap_map_factor() { ! return BOTConstants::N_bytes; } // Initialize the Block Offset Table to cover the memory region passed // in the heap parameter. G1BlockOffsetTable(MemRegion heap, G1RegionToSpaceMapper* storage); // Return the appropriate index into "_offset_array" for "p".
*** 109,131 **** // Return the address indicating the start of the region corresponding to // "index" in "_offset_array". inline HeapWord* address_for_index(size_t index) const; // Variant of address_for_index that does not check the index for validity. inline HeapWord* address_for_index_raw(size_t index) const { ! return _reserved.start() + (index << LogN_words); } }; class G1BlockOffsetTablePart VALUE_OBJ_CLASS_SPEC { friend class G1BlockOffsetTable; friend class VMStructs; private: - enum SomePrivateConstants { - N_words = G1BlockOffsetTable::N_words, - LogN = G1BlockOffsetTable::LogN - }; - // allocation boundary at which offset array must be updated HeapWord* _next_offset_threshold; size_t _next_offset_index; // index corresponding to that boundary // This is the global BlockOffsetTable. --- 103,120 ---- // Return the address indicating the start of the region corresponding to // "index" in "_offset_array". inline HeapWord* address_for_index(size_t index) const; // Variant of address_for_index that does not check the index for validity. inline HeapWord* address_for_index_raw(size_t index) const { ! return _reserved.start() + (index << BOTConstants::LogN_words); } }; class G1BlockOffsetTablePart VALUE_OBJ_CLASS_SPEC { friend class G1BlockOffsetTable; friend class VMStructs; private: // allocation boundary at which offset array must be updated HeapWord* _next_offset_threshold; size_t _next_offset_index; // index corresponding to that boundary // This is the global BlockOffsetTable.
< prev index next >