RFR: 8042298 - Remove the names gen0 and gen1 from the GC code

Stefan Johansson stefan.johansson at oracle.com
Tue May 20 08:42:55 UTC 2014


I followed the discussion and agree.

Change looks good,
Stefan

On 2014-05-19 23:17, Jesper Wilhelmsson wrote:
> Hi,
>
> After some discussions we have concluded that the merged flag used to 
> trigger young GCs before a full GC should keep the name 
> ScavengeBeforeFullGC. There were a couple of arguments for this, the 
> most important from my perspective that ScavengeBeforeFullGC is a 
> publicly documented flag.
>
> So changes since last webrev is that all former usages of 
> CollectGen0First is now using ScavengeBeforeFullGC, and the removal of 
> ScavengeBeforeFullGC is reverted. There is also a check in 
> arguments.cpp to set the correct default value if not running 
> ParallelGC. CollectGen0First and ScavengeBeforeFullGC had different 
> default values.
>
> An updated webrev is available here:
>  http://cr.openjdk.java.net/~jwilhelm/8042298/webrev.3/
>
> Thanks,
> /Jesper
>
>
> Stefan Johansson skrev 16/5/14 13:45:
>> Thanks Jesper,
>>
>> On 2014-05-16 02:10, Jesper Wilhelmsson wrote:
>>> Hi,
>>>
>>> A new webrev is available here:
>>> http://cr.openjdk.java.net/~jwilhelm/8042298/webrev.2/
>>>
>>> In addition to the last webrev the flags TraceGen0Time, 
>>> TraceGen1Time and
>>> CollectGen0First have been renamed to get rid of the Gen0/Gen1.
>>>
>>> Also, since CollectGen0First and ScavengeBeforeFullGC was doing the 
>>> same thing
>>> for different collectors, ScavengeBeforeFullGC has been merged with
>>> CollectGen0First.
>>>
>> Looks good!
>>
>> Stefan
>>> A CCC request has been filed for the flag changes.
>>>
>>> Thanks,
>>> /Jesper
>>>
>>>
>>> Stefan Johansson skrev 15/5/14 12:09:
>>>> On 2014-05-14 23:21, Jesper Wilhelmsson wrote:
>>>>> Hi Stefan,
>>>>>
>>>>> Thanks for looking at this! See comments inline.
>>>>>
>>>>> Stefan Johansson skrev 14/5/14 15:11:
>>>>>> Hi Jesper,
>>>>>>
>>>>>> Thanks for doing this work. Here are some comments:
>>>>>>
>>>>>> src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp:
>>>>>> * TraceGen0Time and TraceGen1Time should be changed to 
>>>>>> TraceYoungTime and
>>>>>> TraceOldTime for consistency, and I guess that will need a CCC 
>>>>>> request.
>>>>>>
>>>>>> src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp 
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> * CollectGen0First -> CollectYoungFirst, same as above. Also used in
>>>>>> tenuredGeneration.hpp.
>>>>>>
>>>>>> src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp
>>>>>> * Comment starting on line 41 mentions TraceGen0Time and gen1.
>>>>>
>>>>> I agree that the names gen0 and gen1 should be completely removed, 
>>>>> which
>>>>> includes changing these flags too. Initially I wanted this change 
>>>>> to be a
>>>>> simple name change so that it would be easy to review it. Changing 
>>>>> the flags
>>>>> is borderline to be more than a name change, but I'm fine with 
>>>>> including that
>>>>> change.
>>>>>
>>>>> I'll file a CCC to change the flags.
>>>>>
>>>> Great, thanks.
>>>>>> As an additional comment, I think that 
>>>>>> GenCollectedHeap::get_gen(int)
>>>>>> should be
>>>>>> broken up into two functions get_young() and get_old(). I get 
>>>>>> that this was
>>>>>> left
>>>>>> to a later patch to avoid having code/logic changes in this patch 
>>>>>> but I think
>>>>>> the change is so little that it makes sense to do it in this 
>>>>>> patch. I would
>>>>>> like
>>>>>> to avoid having code like, even if it is for a brief period of time:
>>>>>> Generation* young = gch->get_gen(0);
>>>>>
>>>>> This change is part of the larger removal of the generation array 
>>>>> which is the
>>>>> last part of this series of collector policy cleanups. Initially I 
>>>>> was OK with
>>>>> moving get_young() and get_old() to this change even though that 
>>>>> would mean
>>>>> that the change would grow considerably in size and wouldn't be a 
>>>>> simple name
>>>>> change anymore. After all the only reason I wanted to keep it 
>>>>> small was to
>>>>> make it easier for the reviewers :-)
>>>>>
>>>> That's good, thanks =)
>>>>> However, when I started to look at it in more detail I realized 
>>>>> that removing
>>>>> get_gen(int) requires non-trivial changes in the serviceability 
>>>>> agent which is
>>>>> the only reason why the last change in this series isn't done yet.
>>>>>
>>>> I understand that you might want to do all the changes in the SA at 
>>>> once, and
>>>> since this patch doesn't require you to change the SA I'm fine with 
>>>> leaving it
>>>> as is.
>>>>> It would be possible to introduce get_young() and get_old() and 
>>>>> replace all
>>>>> usages of get_gen(int) within the VM, but leave get_gen(int) for 
>>>>> the SA to
>>>>> use. I don't really like this approach, but if you prefer it over 
>>>>> just
>>>>> changing the names it's a possibility.
>>>>>
>>>> I'm fine with any of the approaches, none of them are perfect but 
>>>> both are good
>>>> so I'll let you decide how you want to handle it.
>>>>
>>>> Thanks,
>>>> Stefan
>>>>> Thanks,
>>>>> /Jesper
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Stefan
>>>>>>
>>>>>> On 2014-05-02 03:39, Jesper Wilhelmsson wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> This is a step towards removing the _generations array. The 
>>>>>>> names gen0 and
>>>>>>> gen1 are replaced with young and old to use a more standardized 
>>>>>>> vocabulary.
>>>>>>>
>>>>>>> Webrev: http://cr.openjdk.java.net/~jwilhelm/8042298/webrev/
>>>>>>>
>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8042298
>>>>>>>
>>>>>>> Thanks,
>>>>>>> /Jesper
>>>>>>
>>>>
>>



More information about the hotspot-gc-dev mailing list