comparison 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
comparison
equal deleted inserted replaced
352:e0c09f7ec5c4 353:9bb2c10ac07b
791 // will be false, and it will pick up top() as the high water mark 791 // will be false, and it will pick up top() as the high water mark
792 // of region. If it does so after _gc_time_stamp = ..., then it 792 // of region. If it does so after _gc_time_stamp = ..., then it
793 // will pick up the right saved_mark_word() as the high water mark 793 // will pick up the right saved_mark_word() as the high water mark
794 // of the region. Either way, the behaviour will be correct. 794 // of the region. Either way, the behaviour will be correct.
795 ContiguousSpace::set_saved_mark(); 795 ContiguousSpace::set_saved_mark();
796 OrderAccess::release_store_ptr((volatile intptr_t*) &_gc_time_stamp, 796 _gc_time_stamp = curr_gc_time_stamp;
797 (intptr_t) curr_gc_time_stamp); 797 OrderAccess::fence();
798 } 798 }
799 } 799 }
800 800
801 G1OffsetTableContigSpace:: 801 G1OffsetTableContigSpace::
802 G1OffsetTableContigSpace(G1BlockOffsetSharedArray* sharedOffsetArray, 802 G1OffsetTableContigSpace(G1BlockOffsetSharedArray* sharedOffsetArray,