Mercurial > hg > truffle
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, |