RFR (M): 8066780, 8066781, 8066782: Cleanup of duplicated code in TenuredGeneration and ConcurrentMarkSweepGeneration
Bengt Rutisson
bengt.rutisson at oracle.com
Mon Dec 8 15:20:57 UTC 2014
On 2014-12-08 10:32, Bengt Rutisson wrote:
>
> Hi Kim,
>
> Thanks for looking at this!
>
> On 2014-12-05 20:07, Kim Barrett wrote:
>> On Dec 5, 2014, at 10:18 AM, Bengt Rutisson
>> <bengt.rutisson at oracle.com> wrote:
>>> I was looking at the duplicated code in TenuredGeneration and
>>> ConcurrentMarkSweepGeneration and wanted to clean it up. I decided
>>> to split the cleanup into three parts (thanks Kim for suggesting
>>> that in a pre-review). The parts are closely related so I think it
>>> is a good idea to review them together. Thus, I'm asking for reviews
>>> for all three changes in this same email.
>>>
>>> Here are the three changes:
>>>
>>> Split CardGeneration out to its own file
>>> https://bugs.openjdk.java.net/browse/JDK-8066780
>>> http://cr.openjdk.java.net/~brutisso/8066780/webrev.00/
>>>
>>> Just moving code from generations.cpp/hpp to cardGeneration.cpp/hpp.
>>>
>>>
>>> Minor cleanups to TenuredGeneration
>>> https://bugs.openjdk.java.net/browse/JDK-8066781
>>> http://cr.openjdk.java.net/~brutisso/8066781/webrev.00/
>>>
>>> Removing some dead code and making sure that the include guard in
>>> the inline file is correctly named. The _last_gc variable was
>>> exported to the SA agent but the SA agent never referenced it.
>>>
>>> Move common code from CMSGeneration and TenuredGeneration to
>>> CardGeneration
>>> https://bugs.openjdk.java.net/browse/JDK-8066782
>>> http://cr.openjdk.java.net/~brutisso/8066782/webrev.00/
>>>
>>> This is the actual move of common code from TenuredGeneration and
>>> ConcurrentMarkSweepGeneration to CardGeneration. Both subclasses use
>>> a single Space instance and by allowing CardGeneration to find that
>>> space instance it was possible to move many of the methods that work
>>> on the Space instance up to the CardGeneration too.
>>>
>>> One of the changes is to rename the expand() method in
>>> ConcurrentMarkSweepGeneration that took three paramteres to
>>> expand_for_gc_reason(). I did this to avoid that anyone thinks that
>>> ConcurrentMarkSweepGeneration overrides the CardGeneration::expand()
>>> method. This change is included in the webrev above, but if it makes
>>> things easier I also split it out to a separate webrev:
>>>
>>> http://cr.openjdk.java.net/~brutisso/8066782/expand_for_gc_cause.00/
>> Looks good. Just a couple of formatting comments below.
>>
>> Thanks for splitting it up into several webrevs; that hugely
>> simplified the review. [The last one is still a bit tricky, but much
>> easier when isolated from the rest.]
>>
>> ------------------------------------------------------------------------------
>>
>>
>> src/share/vm/memory/tenuredGeneration.inline.hpp
>> 44 if (addr < _the_space->top()) return oop(addr)->size();
>> 45 else {
>> 46 assert(addr == _the_space->top(), "non-block head arg to
>> block_size");
>> 47 return _the_space->end() - _the_space->top();
>> 48 }
>>
>> I'm not sure I've ever before seen that formatting style for an "if",
>> and I'm finding it painful to parse. I also think it violates the
>> Hotspot StyleGuide, e.g.
>> Use braces around substatements. (Relaxable for extremely simple
>> substatements on the same line.)
>> Would you mind adding braces, and a line break before the first
>> return, since you are touching these lines anyway?
>
> Quite agree. Horrible formatting! I changed it to:
>
> size_t TenuredGeneration::block_size(const HeapWord* addr) const {
> if (addr < _the_space->top()) {
> return oop(addr)->size();
> }
> else {
> assert(addr == _the_space->top(), "non-block head arg to
> block_size");
> return _the_space->end() - _the_space->top();
> }
> }
A small update. Stefan J. just pointed out that the else statement is a
on a separate line. I prefer to have it on the same line as the "}".
So, I've updated my change to use:
size_t TenuredGeneration::block_size(const HeapWord* addr) const {
if (addr < _the_space->top()) {
return oop(addr)->size();
} else {
assert(addr == _the_space->top(), "non-block head arg to block_size");
return _the_space->end() - _the_space->top();
}
}
Bengt
>
>>
>> ------------------------------------------------------------------------------
>>
>>
>> src/share/vm/memory/cardGeneration.cpp
>> 187
>> 194
>>
>> A couple of stray blank lines inserted.
>
> Thanks for noting this. I removed these blank lines.
>
> Bengt
>
>
>>
>> ------------------------------------------------------------------------------
>>
>>
>
More information about the hotspot-gc-dev
mailing list