RFR: JDK-8226757: Shenandoah: Make Traversal a separate mode

Roman Kennke rkennke at redhat.com
Tue Jul 2 09:32:25 UTC 2019


There was a small mistake in one of the tests. Updated webrev:

http://cr.openjdk.java.net/~rkennke/JDK-8226757/webrev.02/


Roman


> Hi Aleksey,
> 
> New webrev:
> http://cr.openjdk.java.net/~rkennke/JDK-8226757/webrev.01/
> 
> I addressed all issues you mentioned. I introduced a new ShenandoahMode
> and 3 subclasses for traversal, normal and passive. I also had to adjust
> all tests which was sometimes a bit hairy.
> 
> Sorry, I messed up to make an incremental webrev. Only full one here.
> 
> Better now?
> 
> Roman
> 
> 
>> Brief look:
>>
>> *) I wonder if it makes sense to rework it more thoroughly:
>>  modes:      {passive, normal, traversal}
>>  heuristics: {aggressive, compact, adaptive, static}
>>
>>  ...so that modes select barriers, and heuristics only selects when to start the cycle.
>>
>> *) should_start_normal_gc() is now simply should_start_gc()?
>>
>> *) I guess this can be done in "default_cause", near "default_mode":
>>
>>  156         cause = mode == concurrent_traversal ? GCCause::_shenandoah_traversal_gc :
>> GCCause::_shenandoah_concurrent_gc;
>>
>> *) Looks to me, there would be no message printed if we supply wrong mode?
>>
>> *) I don't think it is fair to call it scavenge. Description also implies "normal" is not
>> concurrent? I'd say "normal (mark, then evac, then update)" and "traversal (mark+evac+update)".
>>
>>   75   experimental(ccstr, ShenandoahGCMode, "normal",                           \
>>   76           "The GC mode to use in Shenandoah GC. Possible values"            \
>>   77           " *) normal    - normal GC (mark-evac-update)"                    \
>>   78           " *) traversal - Traversal GC (concurent scavange)")              \
>>
>> *) TestWrongBarrierDisable.java: indenting, L58:
>>
>>   54         shouldFailAll("-XX:ShenandoahGCHeuristics=adaptive",   concurrent);
>>   55         shouldFailAll("-XX:ShenandoahGCHeuristics=static",     concurrent);
>>   56         shouldFailAll("-XX:ShenandoahGCHeuristics=compact",    concurrent);
>>   57         shouldFailAll("-XX:ShenandoahGCHeuristics=aggressive", concurrent);
>>   58         shouldFailAll("-XX:ShenandoahGCMode=traversal",  traversal);
>>   59         shouldPassAll("-XX:ShenandoahGCHeuristics=passive",    concurrent);
>>   60         shouldPassAll("-XX:ShenandoahGCHeuristics=passive",    traversal);
>>
> 




More information about the hotspot-gc-dev mailing list