Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/graphKit.cpp @ 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 | 97125851f396 |
children | 6deeaebad47a f516d5d7a019 |
comparison
equal
deleted
inserted
replaced
1165:2dd52dea6d28 | 1166:7b0e9cba0307 |
---|---|
3257 } | 3257 } |
3258 | 3258 |
3259 if (use_ReduceInitialCardMarks() | 3259 if (use_ReduceInitialCardMarks() |
3260 && obj == just_allocated_object(control())) { | 3260 && obj == just_allocated_object(control())) { |
3261 // We can skip marks on a freshly-allocated object in Eden. | 3261 // We can skip marks on a freshly-allocated object in Eden. |
3262 // Keep this code in sync with maybe_defer_card_mark() in runtime.cpp. | 3262 // Keep this code in sync with new_store_pre_barrier() in runtime.cpp. |
3263 // That routine informs GC to take appropriate compensating steps | 3263 // That routine informs GC to take appropriate compensating steps, |
3264 // so as to make this card-mark elision safe. | 3264 // upon a slow-path allocation, so as to make this card-mark |
3265 // elision safe. | |
3265 return; | 3266 return; |
3266 } | 3267 } |
3267 | 3268 |
3268 if (!use_precise) { | 3269 if (!use_precise) { |
3269 // All card marks for a (non-array) instance are in one place: | 3270 // All card marks for a (non-array) instance are in one place: |