提交 4bd1eeda 编写于 作者: M mgerdin

8058209: Race in G1 card scanning could allow scanning of memory covered by PLABs

Summary: Read _top before _gc_time_stamp in saved_mark_word() with LoadLoad order to ensure we get a consistent view
Reviewed-by: brutisso, dcubed, dholmes, stefank
上级 b447fa3d
...@@ -1015,10 +1015,13 @@ HeapWord* G1OffsetTableContigSpace::cross_threshold(HeapWord* start, ...@@ -1015,10 +1015,13 @@ HeapWord* G1OffsetTableContigSpace::cross_threshold(HeapWord* start,
HeapWord* G1OffsetTableContigSpace::saved_mark_word() const { HeapWord* G1OffsetTableContigSpace::saved_mark_word() const {
G1CollectedHeap* g1h = G1CollectedHeap::heap(); G1CollectedHeap* g1h = G1CollectedHeap::heap();
assert( _gc_time_stamp <= g1h->get_gc_time_stamp(), "invariant" ); assert( _gc_time_stamp <= g1h->get_gc_time_stamp(), "invariant" );
if (_gc_time_stamp < g1h->get_gc_time_stamp()) HeapWord* local_top = top();
return top(); OrderAccess::loadload();
else if (_gc_time_stamp < g1h->get_gc_time_stamp()) {
return local_top;
} else {
return Space::saved_mark_word(); return Space::saved_mark_word();
}
} }
void G1OffsetTableContigSpace::record_top_and_timestamp() { void G1OffsetTableContigSpace::record_top_and_timestamp() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册