src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp

changeset 704
850fdf70db2b
parent 631
d1605aabd0a1
parent 698
12eea04c8b06
child 888
c96030fff130
     1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Fri Jul 25 11:29:03 2008 -0700
     1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Mon Jul 28 15:30:23 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) {

mercurial