Mercurial > hg > shenandoah-preopenjdk-archive > openjdk8 > hotspot
changeset 7451:84bd193aad36
Mark whole new GCLAB on allocation.
author | Roman Kennke <rkennke@redhat.com> |
---|---|
date | Fri, 16 Jan 2015 23:59:37 +0100 |
parents | 557818193d0e |
children | 1ef0e3bb0a21 |
files | src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentThread.cpp src/share/vm/gc_implementation/shenandoah/shenandoahHeap.cpp |
diffstat | 2 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentThread.cpp Fri Jan 16 13:10:10 2015 +0100 +++ b/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentThread.cpp Fri Jan 16 23:59:37 2015 +0100 @@ -166,7 +166,6 @@ } void ShenandoahConcurrentThread::schedule_full_gc() { - tty->print_cr("scheduling full gc"); _do_full_gc = true; }
--- a/src/share/vm/gc_implementation/shenandoah/shenandoahHeap.cpp Fri Jan 16 13:10:10 2015 +0100 +++ b/src/share/vm/gc_implementation/shenandoah/shenandoahHeap.cpp Fri Jan 16 23:59:37 2015 +0100 @@ -387,6 +387,13 @@ oom_during_evacuation(); return NULL; } + assert(! _concurrent_mark_in_progress, "no new gclabs during marking"); + assert(_evacuation_in_progress, "new gclabs only during evacuation"); + if (ShenandoahUpdateRefsEarly) { + // We mark the whole tlab here, this way we avoid marking every single + // allocated object. + _next_mark_bit_map->parMarkRange(MemRegion(result, word_size)); + } assert(! heap_region_containing(result)->is_in_collection_set(), "Never allocate in dirty region"); if (result != NULL) { if (ShenandoahTraceTLabs) {