diff src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @ 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/g1CollectedHeap.hpp	Thu Jul 03 03:17:29 2008 -0700
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Thu Jul 10 09:29:54 2008 -0700
@@ -247,7 +247,7 @@
   NumberSeq _pop_obj_rc_at_copy;
   void print_popularity_summary_info() const;
 
-  unsigned _gc_time_stamp;
+  volatile unsigned _gc_time_stamp;
 
   size_t* _surviving_young_words;
 
@@ -653,6 +653,12 @@
 
   void reset_gc_time_stamp() {
     _gc_time_stamp = 0;
+    OrderAccess::fence();
+  }
+
+  void increment_gc_time_stamp() {
+    ++_gc_time_stamp;
+    OrderAccess::fence();
   }
 
   void iterate_dirty_card_closure(bool concurrent, int worker_i);