Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @ 1166:7b0e9cba0307
6896647: card marks can be deferred too long
Summary: Deferred card marks are now flushed during the gc prologue. Parallel[Scavege,OldGC] and SerialGC no longer defer card marks generated by COMPILER2 as a result of ReduceInitialCardMarks. For these cases, introduced a diagnostic option to defer the card marks, only for the purposes of testing and diagnostics. CMS and G1 continue to defer card marks. Potential performance concern related to single-threaded flushing of deferred card marks in the gc prologue will be addressed in the future.
Reviewed-by: never, johnc
author | ysr |
---|---|
date | Wed, 13 Jan 2010 15:26:39 -0800 |
parents | ed52bcc32739 |
children | 34fb2662f6c2 |
comparison
equal
deleted
inserted
replaced
1165:2dd52dea6d28 | 1166:7b0e9cba0307 |
---|---|
1005 // See ReduceInitialCardMarks. | 1005 // See ReduceInitialCardMarks. |
1006 virtual bool can_elide_tlab_store_barriers() const { | 1006 virtual bool can_elide_tlab_store_barriers() const { |
1007 return true; | 1007 return true; |
1008 } | 1008 } |
1009 | 1009 |
1010 virtual bool card_mark_must_follow_store() const { | |
1011 return true; | |
1012 } | |
1013 | |
1010 bool is_in_young(oop obj) { | 1014 bool is_in_young(oop obj) { |
1011 HeapRegion* hr = heap_region_containing(obj); | 1015 HeapRegion* hr = heap_region_containing(obj); |
1012 return hr != NULL && hr->is_young(); | 1016 return hr != NULL && hr->is_young(); |
1013 } | 1017 } |
1014 | 1018 |