RFR: Fold Partial GC into Traversal GC

Roman Kennke rkennke at redhat.com
Wed Apr 25 21:08:43 UTC 2018


So here it comes:

>> Re-based on latest merged repo:
>> http://cr.openjdk.java.net/~rkennke/partial-traversal/webrev.03/
> 
> *) Does this build on aarch64? Because I think the relevant changes are missing from
> c1_Runtime1_aarch64.cpp, shenandoahBarrierSetAssembler_aarch64.cpp, macroAssembler_aarch64.cpp,
> stubGenerator_aarch64.cpp

It builds on aarch64 now.

> *) In should_start_traversal_gc(), why periodic GC is ShenandoahHeap::MINOR? I thought it should
> trigger the full cycle to kick out all garbage.

Correct. Fixed.

> *) I think accesses to _gc_cycle_mode are racy: it is now used by ShConcThread and heuristics, but
> we can accidentally use is_{minor|major} some time in the future. There's ShenandoahSharedEnumFlag
> you can use to turn it thread-safe.

Also correct. Fixed.

> *) Still not very happy with ShenandoahRecycleClearsBitmap in ShHeapRegion::recycle() -- but we can
> redo this later.

Yes, let's do it later. Thanks.

> *) Is the move of ShenandoahHeapRegionSetIterator::ShenandoahHeapRegionSetIterator from .inline.hpp
> to .cpp sensible? This desyncs backports...

Want me to extract this, and push separately? It did not build on 'my'
aarch64 box, due to missing inline (tried to compile one definition per
call-site, clashed in linking).

> *) shenandoahMarkCompact.cpp: stray newline
> 
>   871

Fixed.

Differential:
http://cr.openjdk.java.net/~rkennke/partial-traversal/webrev.04.diff/
Full:
http://cr.openjdk.java.net/~rkennke/partial-traversal/webrev.04/

Good now?

Roman



More information about the shenandoah-dev mailing list