diff --git a/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp b/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp index 94377a3beb45dfbf104a6d4a6d25eff858569a2b..d4c641bf0281e9db50230f380f4cb2f56a14a814 100644 --- a/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp +++ b/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp @@ -229,7 +229,7 @@ void ParGCAllocBufferWithBOT::retire(bool end_of_gc, bool retain) { HeapWord* first_card_start = _bsa->address_for_index(first_card_index); if (first_card_start < pre_top) { HeapWord* second_card_start = - _bsa->address_for_index(first_card_index + 1); + _bsa->inc_by_region_size(first_card_start); // Ensure enough room to fill with the smallest block second_card_start = MAX2(second_card_start, pre_top + AlignmentReserve); diff --git a/src/share/vm/memory/blockOffsetTable.hpp b/src/share/vm/memory/blockOffsetTable.hpp index fc76fc9208ca58a46bad51994104d163d2311de9..be9ec01bf30b42498f08327a4523221654e8d888 100644 --- a/src/share/vm/memory/blockOffsetTable.hpp +++ b/src/share/vm/memory/blockOffsetTable.hpp @@ -199,6 +199,12 @@ public: // "index" in "_offset_array". HeapWord* address_for_index(size_t index) const; + // Return the address "p" incremented by the size of + // a region. This method does not align the address + // returned to the start of a region. It is a simple + // primitive. + HeapWord* inc_by_region_size(HeapWord* p) const { return p + N_words; } + // Shared space support void serialize(SerializeOopClosure* soc, HeapWord* start, HeapWord* end); }; diff --git a/src/share/vm/memory/compactingPermGenGen.cpp b/src/share/vm/memory/compactingPermGenGen.cpp index af94649ed890e77dc2ff0663e4d7bad66da90ec7..e1de54e38e8cc578e5aa65143ecd23f97603e31b 100644 --- a/src/share/vm/memory/compactingPermGenGen.cpp +++ b/src/share/vm/memory/compactingPermGenGen.cpp @@ -421,30 +421,6 @@ size_t CompactingPermGenGen::max_capacity() const { } - -bool CompactingPermGenGen::grow_by(size_t bytes) { - // Don't allow _virtual_size to expand into shared spaces. - size_t max_bytes = _virtual_space.uncommitted_size() - _shared_space_size; - if (bytes > _shared_space_size) { - bytes = _shared_space_size; - } - return OneContigSpaceCardGeneration::grow_by(bytes); -} - - -bool CompactingPermGenGen::grow_to_reserved() { - // Don't allow _virtual_size to expand into shared spaces. - bool success = false; - if (_virtual_space.uncommitted_size() > _shared_space_size) { - size_t remaining_bytes = - _virtual_space.uncommitted_size() - _shared_space_size; - success = OneContigSpaceCardGeneration::grow_by(remaining_bytes); - DEBUG_ONLY(if (!success) warning("grow to reserved failed");) - } - return success; -} - - // No young generation references, clear this generation's main space's // card table entries. Do NOT clear the card table entries for the // read-only space (always clear) or the read-write space (valuable diff --git a/src/share/vm/memory/compactingPermGenGen.hpp b/src/share/vm/memory/compactingPermGenGen.hpp index 4d76e473bde6f7e6d9176d65ab569e9df2500550..3a12a8848de19aba4db9bfeee77e453837895106 100644 --- a/src/share/vm/memory/compactingPermGenGen.hpp +++ b/src/share/vm/memory/compactingPermGenGen.hpp @@ -183,8 +183,6 @@ public: void compact(); void post_compact(); size_t contiguous_available() const; - bool grow_by(size_t bytes); - virtual bool grow_to_reserved(); void clear_remembered_set(); void invalidate_remembered_set(); diff --git a/src/share/vm/runtime/globals.hpp b/src/share/vm/runtime/globals.hpp index 51f59293b85e266f97e2d413c3a046c7a6568ec8..f06fa3cef729414efa6b25ff176f9796b19f29a2 100644 --- a/src/share/vm/runtime/globals.hpp +++ b/src/share/vm/runtime/globals.hpp @@ -1443,7 +1443,7 @@ class CommandLineFlags { "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \ " ratio") \ \ - product(bool, CMSPrecleanRefLists1, true, \ + product(bool, CMSPrecleanRefLists1, false, \ "Preclean ref lists during (initial) preclean phase") \ \ product(bool, CMSPrecleanRefLists2, false, \