1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Fri Jun 27 19:12:11 2008 -0700 1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Wed Jul 09 15:08:55 2008 -0700 1.3 @@ -265,6 +265,11 @@ 1.4 young_gen->eden_space()->accumulate_statistics(); 1.5 } 1.6 1.7 + if (ZapUnusedHeapArea) { 1.8 + // Save information needed to minimize mangling 1.9 + heap->record_gen_tops_before_GC(); 1.10 + } 1.11 + 1.12 if (PrintHeapAtGC) { 1.13 Universe::print_heap_before_gc(); 1.14 } 1.15 @@ -315,7 +320,7 @@ 1.16 if (!ScavengeWithObjectsInToSpace) { 1.17 assert(young_gen->to_space()->is_empty(), 1.18 "Attempt to scavenge with live objects in to_space"); 1.19 - young_gen->to_space()->clear(); 1.20 + young_gen->to_space()->clear(SpaceDecorator::Mangle); 1.21 } else if (ZapUnusedHeapArea) { 1.22 young_gen->to_space()->mangle_unused_area(); 1.23 } 1.24 @@ -437,8 +442,10 @@ 1.25 1.26 if (!promotion_failure_occurred) { 1.27 // Swap the survivor spaces. 1.28 - young_gen->eden_space()->clear(); 1.29 - young_gen->from_space()->clear(); 1.30 + 1.31 + 1.32 + young_gen->eden_space()->clear(SpaceDecorator::Mangle); 1.33 + young_gen->from_space()->clear(SpaceDecorator::Mangle); 1.34 young_gen->swap_spaces(); 1.35 1.36 size_t survived = young_gen->from_space()->used_in_bytes(); 1.37 @@ -600,6 +607,12 @@ 1.38 Universe::print_heap_after_gc(); 1.39 } 1.40 1.41 + if (ZapUnusedHeapArea) { 1.42 + young_gen->eden_space()->check_mangled_unused_area_complete(); 1.43 + young_gen->from_space()->check_mangled_unused_area_complete(); 1.44 + young_gen->to_space()->check_mangled_unused_area_complete(); 1.45 + } 1.46 + 1.47 scavenge_exit.update(); 1.48 1.49 if (PrintGCTaskTimeStamps) {