diff src/share/vm/gc_implementation/g1/heapRegion.cpp @ 353:9bb2c10ac07b

6723570: G1: assertion failure: p == current_top or oop(p)->is_oop(),"p is not a block start" (revisited!) Summary: Fixed the incorrect assigment to G1OffsetTableContigSpace::_gc_time_stamp. Also added a little more paranoia to operations on a global timestamp. Reviewed-by: tonyp
author iveresov
date Thu, 10 Jul 2008 09:29:54 -0700
parents 37f87013dfd8
children 0edda524b58c
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp	Thu Jul 03 03:17:29 2008 -0700
+++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp	Thu Jul 10 09:29:54 2008 -0700
@@ -793,8 +793,8 @@
     // will pick up the right saved_mark_word() as the high water mark
     // of the region. Either way, the behaviour will be correct.
     ContiguousSpace::set_saved_mark();
-    OrderAccess::release_store_ptr((volatile intptr_t*) &_gc_time_stamp,
-                                   (intptr_t) curr_gc_time_stamp);
+    _gc_time_stamp = curr_gc_time_stamp;
+    OrderAccess::fence();
   }
 }