RFR: JDK-8061802 - REDO - Remove the generations array
Kim Barrett
kim.barrett at oracle.com
Tue Feb 10 22:56:20 UTC 2015
On Feb 10, 2015, at 3:38 PM, Jesper Wilhelmsson <jesper.wilhelmsson at oracle.com> wrote:
>
> Hi Kim,
>
> Thanks for taking another close look at this change!
>
> Some of these issues are the result of this being a part of a bigger change, but I have addressed your concerns to make sure this intermediate version is of decent quality even without the following cleanups. (Even though I hope we will get the rest in asap. Those will be a lot easier to review).
>
> For example anything related to levels and _n_gens will be removed in later patches when the entire level concept is removed.
That’s what I thought, but I would prefer having this changeset be able to stand on its own merits. I think the further changes will be easier to understand with the additional (usually temporary) asserts and such, especially for anyone who didn’t review this changeset.
> A new webrev is available here:
> http://cr.openjdk.java.net/~jwilhelm/8061802/webrev.02/
This webrev seems to be broken - genCollectedHeap.cpp frame display is messed up. Old version is showing as empty, although new version still highlights differences. I didn’t look at it carefully though, since I’m not sure I’d be looking at anything like the intended code.
A few inline replies.
>> ------------------------------------------------------------------------------
>> src/share/vm/memory/genCollectedHeap.cpp
>> collect_generation and do_collection
>>
>> I tried to give the changes here a thorough look, but the diffs are
>> very messy. I hope I didn't miss anything.
>>
>> I think the review of this would have been noticably easier if the
>> extraction of collect_generation into a separate function had happened
>> before and independently of the generation array changes. Oh well.
>
> That may be true, even though I believe that the only major difference if this would have been done separately would be that the call sites would use get_gen(0/1) instead of young/old_gen. This is clearly the most difficult part of removing the generation array and also this is where we saw a few bugs in the last version. According to our tests it should be fine now. :)
I think having the splitting isolated might have made comparison checking easier, at least for me, because I’d know there weren’t supposed to be any functional differences. I wonder if the diff might have been simpler with collect_generation after do_collection. But this is all water under the bridge.
>> ------------------------------------------------------------------------------
>> src/share/vm/memory/genCollectedHeap.cpp
>> 574 void GenCollectedHeap::
>> 575 gen_process_roots(int level,
>>
>> I think the proposed changes maintain the previous behavior, as
>> desired. However ...
>>
>> This is probably something for a future (but soon, I hope) cleanup.
>>
>> […]
>> I'm ok with the proposed change as is, as part of that change set.
>> But please make sure there's a follow-on cleanup RFE.
>
> I absolutely agree and I assume there are other simplifications and cleanups that will be apparent once the rest of the cleanups goes in as well. I copied your description above into an RFE to handle this issue.
>
> https://bugs.openjdk.java.net/browse/JDK-8072809
Thank you.
More information about the hotspot-gc-dev
mailing list