comparison src/share/vm/memory/genCollectedHeap.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 052a899eec3e
children c18cbe5936b8
comparison
equal deleted inserted replaced
1165:2dd52dea6d28 1166:7b0e9cba0307
256 // Can a compiler initialize a new object without store barriers? 256 // Can a compiler initialize a new object without store barriers?
257 // This permission only extends from the creation of a new object 257 // This permission only extends from the creation of a new object
258 // via a TLAB up to the first subsequent safepoint. 258 // via a TLAB up to the first subsequent safepoint.
259 virtual bool can_elide_tlab_store_barriers() const { 259 virtual bool can_elide_tlab_store_barriers() const {
260 return true; 260 return true;
261 }
262
263 virtual bool card_mark_must_follow_store() const {
264 return UseConcMarkSweepGC;
261 } 265 }
262 266
263 // We don't need barriers for stores to objects in the 267 // We don't need barriers for stores to objects in the
264 // young gen and, a fortiori, for initializing stores to 268 // young gen and, a fortiori, for initializing stores to
265 // objects therein. This applies to {DefNew,ParNew}+{Tenured,CMS} 269 // objects therein. This applies to {DefNew,ParNew}+{Tenured,CMS}