# HG changeset patch # User jmasa # Date 1249277607 25200 # Node ID 59726d16b30dc4d780d1ac9eb42ff925c14554fd # Parent ff004bcd25960ffa048adc4d39ae4bf2e0a239b1# Parent 061cd4d965fcb0c7af889fbc740cc70a17cb53eb Merge diff -r 061cd4d965fc -r 59726d16b30d src/share/vm/memory/cardTableModRefBS.cpp --- a/src/share/vm/memory/cardTableModRefBS.cpp Sun Aug 02 18:44:36 2009 -0700 +++ b/src/share/vm/memory/cardTableModRefBS.cpp Sun Aug 02 22:33:27 2009 -0700 @@ -253,8 +253,16 @@ } #endif // The guard page is always committed and should not be committed over. - HeapWord* const new_end_for_commit = MIN2(new_end_aligned, - _guard_region.start()); + // "guarded" is used for assertion checking below and recalls the fact + // that the would-be end of the new committed region would have + // penetrated the guard page. + HeapWord* new_end_for_commit = new_end_aligned; + + DEBUG_ONLY(bool guarded = false;) + if (new_end_for_commit > _guard_region.start()) { + new_end_for_commit = _guard_region.start(); + DEBUG_ONLY(guarded = true;) + } if (new_end_for_commit > cur_committed.end()) { // Must commit new pages. @@ -302,7 +310,7 @@ // not the aligned up expanded region. // jbyte* const end = byte_after(new_region.last()); jbyte* const end = (jbyte*) new_end_for_commit; - assert((end >= byte_after(new_region.last())) || collided, + assert((end >= byte_after(new_region.last())) || collided || guarded, "Expect to be beyond new region unless impacting another region"); // do nothing if we resized downward. #ifdef ASSERT