# HG changeset patch # User Roman Kennke # Date 1421449177 -3600 # Node ID 84bd193aad3696a92cee8877d01f70041ad050ca # Parent 557818193d0e6091e6bd8f872b7ff9ea3476f75b Mark whole new GCLAB on allocation. diff -r 557818193d0e -r 84bd193aad36 src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentThread.cpp --- 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; } diff -r 557818193d0e -r 84bd193aad36 src/share/vm/gc_implementation/shenandoah/shenandoahHeap.cpp --- 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) {