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