RFR: 8289943: Simplify some object allocation merges [v12]
Vladimir Kozlov
kvn at openjdk.org
Thu Oct 6 01:22:07 UTC 2022
On Wed, 5 Oct 2022 23:37:11 GMT, Cesar Soares Lucas <cslucas at openjdk.org> wrote:
>> Hi there, can I please get some feedback on this approach to simplify object allocation merges in order to promote Scalar Replacement of the objects involved in the merge?
>>
>> The basic idea for this [approach was discussed in this thread](https://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2022-April/055189.html) and it consists of:
>> 1) Identify Phi nodes that merge object allocations and replace them with a new IR node called ReducedAllocationMergeNode (RAM node).
>> 2) Scalar Replace the incoming allocations to the RAM node.
>> 3) Scalar Replace the RAM node itself.
>>
>> There are a few conditions for doing the replacement of the Phi by a RAM node though - Although I plan to work on removing them in subsequent PRs:
>>
>> - The only supported users of the original Phi are AddP->Load, SafePoints/Traps, DecodeN.
>>
>> These are the critical parts of the implementation and I'd appreciate it very much if you could tell me if what I implemented isn't violating any C2 IR constraints:
>>
>> - The way I identify/use the memory edges that will be used to find the last stored values to the merged object fields.
>> - The way I check if there is an incoming Allocate node to the original Phi node.
>> - The way I check if there is no store to the merged objects after they are merged.
>>
>> Testing:
>> - Windows/Linux/MAC fastdebug/release
>> - hotspot_all
>> - tier1
>> - Renaissance
>> - dacapo
>> - new IR-based tests
>
> Cesar Soares Lucas has updated the pull request incrementally with one additional commit since the last revision:
>
> Fix code style.
Thank you for answering my questions and doing all research.
Let do this: make flag "experimental" and `true` by default. This will allow to test it for some time after changes are integrated. If everything looks good we keep it that way otherwise we can switch it off before JDK 20 is shipped (or switch it off regardless before shipping).
I will start new round of testing (more tiers) and I will ask others to review changes.
I think we should go with current state of changes if it satisfied other reviewers.
-------------
PR: https://git.openjdk.org/jdk/pull/9073
More information about the hotspot-compiler-dev
mailing list