RFR: 8289943: Simplify some object allocation merges [v12]

Cesar Soares Lucas cslucas at openjdk.org
Wed Oct 5 23:37:11 UTC 2022


> 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.

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/9073/files
  - new: https://git.openjdk.org/jdk/pull/9073/files/203b40b1..a03b91a7

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=9073&range=11
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=9073&range=10-11

  Stats: 154 lines in 2 files changed: 48 ins; 20 del; 86 mod
  Patch: https://git.openjdk.org/jdk/pull/9073.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/9073/head:pull/9073

PR: https://git.openjdk.org/jdk/pull/9073


More information about the hotspot-compiler-dev mailing list