src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hs-gc-cms-IndexSetStride Cdiff src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp

src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp

Print this page

        

*** 56,67 **** size_t MinChunkSize = 0; void CompactibleFreeListSpace::set_cms_values() { // Set CMS global values assert(MinChunkSize == 0, "already set"); ! #define numQuanta(x,y) ((x+y-1)/y) ! MinChunkSize = numQuanta(sizeof(FreeChunk), MinObjAlignmentInBytes) * MinObjAlignment; assert(IndexSetStart == 0 && IndexSetStride == 0, "already set"); IndexSetStart = MinChunkSize; IndexSetStride = MinObjAlignment; } --- 56,70 ---- size_t MinChunkSize = 0; void CompactibleFreeListSpace::set_cms_values() { // Set CMS global values assert(MinChunkSize == 0, "already set"); ! ! // MinChunkSize should be a multiple of MinObjAlignment and be large enough ! // for chunks to contain a FreeChunk. ! size_t min_chunk_size_in_bytes = align_size_up(sizeof(FreeChunk), MinObjAlignmentInBytes); ! MinChunkSize = min_chunk_size_in_bytes / BytesPerWord; assert(IndexSetStart == 0 && IndexSetStride == 0, "already set"); IndexSetStart = MinChunkSize; IndexSetStride = MinObjAlignment; }
*** 2532,2547 **** assert(_dictionary->min_size() <= IndexSetSize, "Some sizes can't be allocated without recourse to" " linear allocation buffers"); assert(BinaryTreeDictionary<FreeChunk>::min_tree_chunk_size*HeapWordSize == sizeof(TreeChunk<FreeChunk>), "else MIN_TREE_CHUNK_SIZE is wrong"); ! assert((IndexSetStride == 2 && IndexSetStart == 4) || // 32-bit ! (IndexSetStride == 1 && IndexSetStart == 3), "just checking"); // 64-bit ! assert((IndexSetStride != 2) || (IndexSetStart % 2 == 0), ! "Some for-loops may be incorrectly initialized"); ! assert((IndexSetStride != 2) || (IndexSetSize % 2 == 1), ! "For-loops that iterate over IndexSet with stride 2 may be wrong"); } #endif void CompactibleFreeListSpace::printFLCensus(size_t sweep_count) const { assert_lock_strong(&_freelistLock); --- 2535,2546 ---- assert(_dictionary->min_size() <= IndexSetSize, "Some sizes can't be allocated without recourse to" " linear allocation buffers"); assert(BinaryTreeDictionary<FreeChunk>::min_tree_chunk_size*HeapWordSize == sizeof(TreeChunk<FreeChunk>), "else MIN_TREE_CHUNK_SIZE is wrong"); ! assert(IndexSetStart != 0, "IndexSetStart not initialized"); ! assert(IndexSetStride != 0, "IndexSetStride not initialized"); } #endif void CompactibleFreeListSpace::printFLCensus(size_t sweep_count) const { assert_lock_strong(&_freelistLock);
src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File