RFR: Cleanup: update-refs check in_collection_set twice
Roman Kennke
rkennke at redhat.com
Fri May 12 10:50:39 UTC 2017
Am 12.05.2017 um 12:47 schrieb Aleksey Shipilev:
> Hi,
>
> Minor cleanup in update-refs handling, do in_collection_set check once:
>
> diff -r d5d4cc781486 src/share/vm/gc/shenandoah/shenandoahHeap.cpp
> --- a/src/share/vm/gc/shenandoah/shenandoahHeap.cpp Thu May 11 21:14:39 2017 +0200
> +++ b/src/share/vm/gc/shenandoah/shenandoahHeap.cpp Fri May 12 12:43:18 2017 +0200
> @@ -2400,15 +2400,16 @@
> void work(uint worker_id) {
> ShenandoahHeapRegion* r = _regions->claim_next();
> while (r != NULL) {
> - if (! _heap->in_collection_set(r) &&
> - ! r->is_empty()) {
> - _heap->marked_object_oop_safe_iterate(r, &cl);
> - } else if (_heap->in_collection_set(r)) {
> + if (_heap->in_collection_set(r)) {
> HeapWord* bottom = r->bottom();
> HeapWord* top = _heap->complete_top_at_mark_start(r->bottom());
> if (top > bottom) {
> _heap->complete_mark_bit_map()->clear_range_large(MemRegion(bottom,
> top));
> }
> + } else {
> + if (!r->is_empty()) {
> + _heap->marked_object_oop_safe_iterate(r, &cl);
> + }
> }
> if (_heap->cancelled_concgc()) {
> return;
>
> Thanks,
> -Aleksey
>
Yes
More information about the shenandoah-dev
mailing list