1.1 --- a/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp Fri Jul 25 11:29:03 2008 -0700 1.2 +++ b/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp Mon Jul 28 15:30:23 2008 -0700 1.3 @@ -162,10 +162,9 @@ 1.4 // Grow the generation 1.5 size_t change = desired_size - orig_size; 1.6 assert(change % alignment == 0, "just checking"); 1.7 - if (!virtual_space()->expand_by(change)) { 1.8 + if (expand(change)) { 1.9 return false; // Error if we fail to resize! 1.10 } 1.11 - 1.12 size_changed = true; 1.13 } else if (desired_size < orig_size) { 1.14 size_t desired_change = orig_size - desired_size; 1.15 @@ -222,7 +221,9 @@ 1.16 // Was there a shrink of the survivor space? 1.17 if (new_end < to()->end()) { 1.18 MemRegion mr(to()->bottom(), new_end); 1.19 - to()->initialize(mr, false /* clear */); 1.20 + to()->initialize(mr, 1.21 + SpaceDecorator::DontClear, 1.22 + SpaceDecorator::DontMangle); 1.23 } 1.24 } 1.25 } 1.26 @@ -322,9 +323,7 @@ 1.27 pointer_delta(from_start, eden_start, sizeof(char))); 1.28 } 1.29 1.30 -// tty->print_cr("eden_size before: " SIZE_FORMAT, eden_size); 1.31 eden_size = align_size_down(eden_size, alignment); 1.32 -// tty->print_cr("eden_size after: " SIZE_FORMAT, eden_size); 1.33 eden_end = eden_start + eden_size; 1.34 assert(eden_end >= eden_start, "addition overflowed") 1.35 1.36 @@ -501,11 +500,31 @@ 1.37 size_t old_from = from()->capacity(); 1.38 size_t old_to = to()->capacity(); 1.39 1.40 + // If not clearing the spaces, do some checking to verify that 1.41 + // the spaces are already mangled. 1.42 + 1.43 + // Must check mangling before the spaces are reshaped. Otherwise, 1.44 + // the bottom or end of one space may have moved into another 1.45 + // a failure of the check may not correctly indicate which space 1.46 + // is not properly mangled. 1.47 + if (ZapUnusedHeapArea) { 1.48 + HeapWord* limit = (HeapWord*) virtual_space()->high(); 1.49 + eden()->check_mangled_unused_area(limit); 1.50 + from()->check_mangled_unused_area(limit); 1.51 + to()->check_mangled_unused_area(limit); 1.52 + } 1.53 + 1.54 // The call to initialize NULL's the next compaction space 1.55 - eden()->initialize(edenMR, true); 1.56 + eden()->initialize(edenMR, 1.57 + SpaceDecorator::Clear, 1.58 + SpaceDecorator::DontMangle); 1.59 eden()->set_next_compaction_space(from()); 1.60 - to()->initialize(toMR , true); 1.61 - from()->initialize(fromMR, false); // Note, not cleared! 1.62 + to()->initialize(toMR , 1.63 + SpaceDecorator::Clear, 1.64 + SpaceDecorator::DontMangle); 1.65 + from()->initialize(fromMR, 1.66 + SpaceDecorator::DontClear, 1.67 + SpaceDecorator::DontMangle); 1.68 1.69 assert(from()->top() == old_from_top, "from top changed!"); 1.70