RFR: Traversal: Don't traverse new objects

Roman Kennke rkennke at redhat.com
Wed Feb 21 17:34:36 UTC 2018


I removed the is_alloc_region() stuff in favour of checking r->tams()
< r->top() which tells me which region is an alloc region, so that we
can exclude them when trashing empty regions (alloc regions look empty
because no liveness data is accounted for). Notice that evac-regions
are not affected by this, because we *do* count evacuated objects/tlab
as live in evac regions.

http://cr.openjdk.java.net/~rkennke/traversal-no-traverse-new/webrev.02

Passes hotspot_gc_shenandoah

Ok to push?

Roman

On Tue, Feb 20, 2018 at 12:22 PM, Aleksey Shipilev <shade at redhat.com> wrote:
> On 02/19/2018 06:48 PM, Roman Kennke wrote:
>> Full-patch:
>> http://cr.openjdk.java.net/~rkennke/traversal-no-traverse-new/webrev.01/
>
> *) I still do not get the interaction with next TAMS, can you explain a bit? Still very weird to see
> TAMS modified *during the cycle*. It might deserve the comment.
>
> *) It seems "is_alloc_region" is actually "has_allocs_during_gc"?
>
> *) It seems that setting alloc_region for humongous objects should also be guarded with
> is_concurrent_traversal_in_progress(), otherwise you over-filter them?
>
>  202     r->set_alloc_region(true);
>
> *) I am still idly wondering if all this can be reworked to use first/last allocation timestamps
> that we gather already. We would need to split them by GC/app allocations, but it seems to better
> capture what we are tracking?
>
> Thanks,
> -Aleksey
>


More information about the shenandoah-dev mailing list