8327963: C2: fix construction of memory graph around Initialize node to prevent incorrect execution if allocation is removed#623
Conversation
Reviewed-by: dlong, kvn, shade
…to prevent incorrect execution if allocation is removed Co-authored-by: Emanuel Peter <epeter@openjdk.org> Co-authored-by: Roberto Castañeda Lozano <rcastanedalo@openjdk.org> Reviewed-by: epeter, rcastanedalo
Reviewed-by: chagedorn, mhaessig
Reviewed-by: rcastanedalo, epeter
…eal_for by comparing the hash of a node before and after Ideal Co-authored-by: Emanuel Peter <epeter@openjdk.org> Reviewed-by: galder, dfenacci, epeter
Reviewed-by: epeter, mhaessig, chagedorn
…r away during IGVN Reviewed-by: qamai, aseoane
|
👋 Welcome back antonvoznia! A progress list of the required criteria for merging this PR into |
|
/issue add JDK-8360031, JDK-8347273, JDK-8351889, JDK-8361144, JDK-8371536, JDK-8375442 |
|
❗ This change is not yet ready to be integrated. |
|
This backport pull request has now been updated with issue from the original commit. |
|
@antonvoznia Adding additional issue to issue list: Adding additional issue to issue list: Adding additional issue to issue list: Adding additional issue to issue list: Adding additional issue to issue list: |
|
Hi @GoeLin , I'd like to ask for your opinion on how to approach the following case. I created the fairly large PR that contains 7 commits in this jdk25u-dev repository. The main C2 issue caused by incorrect EA analysis is solved in a single commit. Unfortunately, the commit introduces a crash that had been solved later, there: Technically, we need just these 2 commits. What do you think, would it be possible to bring the solution within current PR? Thanks! |
Hi,
I prepare (reopened) a pretty big PR with several backports.
The original fix that is needed
8327963: C2: fix construction of memory graph around Initialize node to prevent incorrect execution if allocation is removedThis fixes EA issues that cause NPE when accessing to an initialized field.
However, this fix introduces a crash that is solved in
8375442: C2: Notify nodes that inspect the graph deeply of changes far away during IGVNTechnically, I need these 2 fixes only. But there are dependencies in the code modifications that I had to pull in with additional backports.
I'm not sure how to bring these 2 fixes into JDK 25 more easily.
I decided to create a chain of backports.
Feel free to suggest any ideas on how I could simplify it.
Testing.
No regression found.
Below I explain the chain dependencies.
MemBarNode::remove, without it the 2. fix crashes on the assertfind_inst_mem(). The crash is fixed under 7.verify_optimize(entangled with 3.)PhaseIterGVN::verify_Ideal_forby comparing the hash of a node before and after Idealverify_*_forfrom bool to void, this logic is used in the following fix 7.find_inst_mem()that was introduced in 1.Not clean backports:
8371536: C2: VerifyIterativeGVN should assert on first detected failure
- current commit modifies a function that was also changed in 8371581: C2: PhaseCCP should reach fixpoint by revisiting deeply-Value-d nodes
I've not done the backport to minimize the commits chain, so I just extended the function on the strict argument within this commit
8375442: C2: Notify nodes that inspect the graph deeply of changes far away during IGVN
Conflict files:
Progress
Issues
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk25u-dev.git pull/623/head:pull/623$ git checkout pull/623Update a local copy of the PR:
$ git checkout pull/623$ git pull https://git.openjdk.org/jdk25u-dev.git pull/623/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 623View PR using the GUI difftool:
$ git pr show -t 623Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk25u-dev/pull/623.diff
Using Webrev
Link to Webrev Comment