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