hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
changeset 1388 3677f5f3d66b
parent 1387 580d4ae0a776
child 1623 a0dd9009e992
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Wed Aug 06 11:57:31 2008 -0400
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Thu Aug 21 23:36:31 2008 -0400
@@ -252,8 +252,6 @@
   init_top_at_mark_start();
 }
 
-
-
 DirtyCardToOopClosure*
 HeapRegion::new_dcto_closure(OopClosure* cl,
                              CardTableModRefBS::PrecisionStyle precision,
@@ -292,7 +290,7 @@
 
   _offsets.resize(HeapRegion::GrainWords);
   init_top_at_mark_start();
-  if (clear_space) clear();
+  if (clear_space) clear(SpaceDecorator::Mangle);
 }
 
 // <PREDICTION>
@@ -352,8 +350,8 @@
   _is_on_unclean_list = b;
 }
 
-void HeapRegion::initialize(MemRegion mr, bool clear_space) {
-  G1OffsetTableContigSpace::initialize(mr, false);
+void HeapRegion::initialize(MemRegion mr, bool clear_space, bool mangle_space) {
+  G1OffsetTableContigSpace::initialize(mr, false, mangle_space);
   hr_clear(false/*par*/, clear_space);
 }
 #ifdef _MSC_VER // the use of 'this' below gets a warning, make it go away
@@ -381,7 +379,9 @@
   _orig_end = mr.end();
   // Note that initialize() will set the start of the unmarked area of the
   // region.
-  this->initialize(mr, !is_zeroed);
+  this->initialize(mr, !is_zeroed, SpaceDecorator::Mangle);
+  set_top(bottom());
+  set_saved_mark();
 
   _rem_set =  new HeapRegionRemSet(sharedOffsetArray, this);
 
@@ -729,16 +729,16 @@
 // G1OffsetTableContigSpace code; copied from space.cpp.  Hope this can go
 // away eventually.
 
-void G1OffsetTableContigSpace::initialize(MemRegion mr, bool clear_space) {
+void G1OffsetTableContigSpace::initialize(MemRegion mr, bool clear_space, bool mangle_space) {
   // false ==> we'll do the clearing if there's clearing to be done.
-  ContiguousSpace::initialize(mr, false);
+  ContiguousSpace::initialize(mr, false, mangle_space);
   _offsets.zero_bottom_entry();
   _offsets.initialize_threshold();
-  if (clear_space) clear();
+  if (clear_space) clear(mangle_space);
 }
 
-void G1OffsetTableContigSpace::clear() {
-  ContiguousSpace::clear();
+void G1OffsetTableContigSpace::clear(bool mangle_space) {
+  ContiguousSpace::clear(mangle_space);
   _offsets.zero_bottom_entry();
   _offsets.initialize_threshold();
 }
@@ -805,7 +805,7 @@
   _gc_time_stamp(0)
 {
   _offsets.set_space(this);
-  initialize(mr, !is_zeroed);
+  initialize(mr, !is_zeroed, SpaceDecorator::Mangle);
 }
 
 size_t RegionList::length() {