# HG changeset patch # User tonyp # Date 1260213754 18000 # Node ID 9118860519b65de176c585dd6126a843acbca133 # Parent afc30fccf324a6083e25be4c3d575cf4f7e37b53 6904967: G1: some CollectionUsageThreshold tests fail Summary: ensure that max and committed are non-zero (currently: at least as large as the region size). Reviewed-by: iveresov, mchung diff -r afc30fccf324 -r 9118860519b6 src/share/vm/services/g1MemoryPool.cpp --- a/src/share/vm/services/g1MemoryPool.cpp Fri Dec 04 07:44:41 2009 -0500 +++ b/src/share/vm/services/g1MemoryPool.cpp Mon Dec 07 14:22:34 2009 -0500 @@ -40,7 +40,7 @@ // See the comment at the top of g1MemoryPool.hpp size_t G1MemoryPoolSuper::eden_space_committed(G1CollectedHeap* g1h) { - return eden_space_used(g1h); + return MAX2(eden_space_used(g1h), (size_t) HeapRegion::GrainBytes); } // See the comment at the top of g1MemoryPool.hpp @@ -54,12 +54,14 @@ // See the comment at the top of g1MemoryPool.hpp size_t G1MemoryPoolSuper::eden_space_max(G1CollectedHeap* g1h) { + // This should ensure that it returns a value no smaller than the + // region size. Currently, eden_space_committed() guarantees that. return eden_space_committed(g1h); } // See the comment at the top of g1MemoryPool.hpp size_t G1MemoryPoolSuper::survivor_space_committed(G1CollectedHeap* g1h) { - return survivor_space_used(g1h); + return MAX2(survivor_space_used(g1h), (size_t) HeapRegion::GrainBytes); } // See the comment at the top of g1MemoryPool.hpp @@ -71,6 +73,8 @@ // See the comment at the top of g1MemoryPool.hpp size_t G1MemoryPoolSuper::survivor_space_max(G1CollectedHeap* g1h) { + // This should ensure that it returns a value no smaller than the + // region size. Currently, survivor_space_committed() guarantees that. return survivor_space_committed(g1h); } @@ -81,6 +85,7 @@ size_t survivor_committed = survivor_space_committed(g1h); committed = subtract_up_to_zero(committed, eden_committed); committed = subtract_up_to_zero(committed, survivor_committed); + committed = MAX2(committed, (size_t) HeapRegion::GrainBytes); return committed; } @@ -101,6 +106,7 @@ size_t survivor_max = survivor_space_max(g1h); max = subtract_up_to_zero(max, eden_max); max = subtract_up_to_zero(max, survivor_max); + max = MAX2(max, (size_t) HeapRegion::GrainBytes); return max; }