Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8274406: RunThese30M.java failed "assert(!LCA_orig->dominates(pred_block) || early->dominates(pred_block)) failed: early is high enough" #5747

Closed
wants to merge 1 commit into from

Conversation

@chhagedorn
Copy link
Member

@chhagedorn chhagedorn commented Sep 29, 2021

JDK-8274074 enabled the sinking of pinned nodes inside a loop whose actual get_ctrl() is outside of the loop. This fix now rewired a LoadN node to the output projection of an Allocate node (right before the Catch node). This is unexpected and thus when expanding the Allocate macro node later, the LoadN is put into one path of an If that is inserted here:

IfNode *needgc_iff = new IfNode(contended_region, needgc_bol, PROB_UNLIKELY_MAG(4), COUNT_UNKNOWN);

As a result, the load's early block does not dominate its LCA block later when inserting anti dependencies and we fail with the assertion.

To avoid the need to special case certain nodes obtained with get_ctrl(), I propose to simply use place_outside_loop() to rewire the control input to the first node right outside of the loop.

I additionally fixed the wrong format of the compile command in the test added by JDK-8274074 which produced a printed warning/error but the test still worked.

Thanks,
Christian


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed

Issue

  • JDK-8274406: RunThese30M.java failed "assert(!LCA_orig->dominates(pred_block) || early->dominates(pred_block)) failed: early is high enough"

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/5747/head:pull/5747
$ git checkout pull/5747

Update a local copy of the PR:
$ git checkout pull/5747
$ git pull https://git.openjdk.java.net/jdk pull/5747/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 5747

View PR using the GUI difftool:
$ git pr show -t 5747

Using diff file

Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/5747.diff

…ock) || early->dominates(pred_block)) failed: early is high enough"
@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Sep 29, 2021

👋 Welcome back chagedorn! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk openjdk bot added the rfr label Sep 29, 2021
@openjdk
Copy link

@openjdk openjdk bot commented Sep 29, 2021

@chhagedorn The following label will be automatically applied to this pull request:

  • hotspot-compiler

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command.

@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 29, 2021

Webrevs

Copy link
Contributor

@vnkozlov vnkozlov left a comment

Good.

@openjdk
Copy link

@openjdk openjdk bot commented Sep 29, 2021

@chhagedorn This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

After integration, the commit message for the final commit will be:

8274406: RunThese30M.java failed "assert(!LCA_orig->dominates(pred_block) || early->dominates(pred_block)) failed: early is high enough"

Reviewed-by: kvn, thartmann

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been 27 new commits pushed to the master branch:

  • 355356c: 8273435: Remove redundant zero-length check in ClassDesc.of
  • 97385d4: 8274405: Suppress warnings on non-serializable non-transient instance fields in javac and javadoc
  • 79cebe2: 8274050: Unnecessary Vector usage in javax.crypto
  • 97b2874: 8274509: Remove stray * and stylistic . from doc comments
  • b1b6696: 8274453: (sctp) com/sun/nio/sctp/SctpChannel/CloseDescriptors.java test should be resilient to lsof warnings
  • edd9d1c: 8274330: Incorrect encoding of the DistributionPointName object in IssuingDistributionPointExtension
  • 980c50d: 8272562: C2: assert(false) failed: Bad graph detected in build_loop_late
  • 1dc8fa9: 8274340: [BACKOUT] JDK-8271880: Tighten condition for excluding regions from collecting cards with cross-references
  • aaa36cc: 8274242: Implement fast-path for ASCII-compatible CharsetEncoders on x86
  • c4d1157: 8271855: [TESTBUG] Wrong weakCompareAndSet assumption in UnsafeIntrinsicsTest
  • ... and 17 more: https://git.openjdk.java.net/jdk/compare/961dcffc862a4830fbf26791835a98c12d4b513e...master

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready label Sep 29, 2021
Copy link
Member

@dean-long dean-long left a comment

Please run tier7 tests before pushing.

Copy link
Member

@TobiHartmann TobiHartmann left a comment

Looks good to me.

@chhagedorn
Copy link
Member Author

@chhagedorn chhagedorn commented Sep 30, 2021

Thanks Vladimir and Tobias for your reviews!

Please run tier7 tests before pushing.

Tier7 passed.

@chhagedorn
Copy link
Member Author

@chhagedorn chhagedorn commented Sep 30, 2021

/integrate

@openjdk
Copy link

@openjdk openjdk bot commented Sep 30, 2021

Going to push as commit dfc557c.
Since your change was applied there have been 29 commits pushed to the master branch:

  • c0533ef: 8274522: java/lang/management/ManagementFactory/MXBeanException.java test fails with Shenandoah
  • f8415a9: 8274523: java/lang/management/MemoryMXBean/MemoryTest.java test should handle Shenandoah
  • 355356c: 8273435: Remove redundant zero-length check in ClassDesc.of
  • 97385d4: 8274405: Suppress warnings on non-serializable non-transient instance fields in javac and javadoc
  • 79cebe2: 8274050: Unnecessary Vector usage in javax.crypto
  • 97b2874: 8274509: Remove stray * and stylistic . from doc comments
  • b1b6696: 8274453: (sctp) com/sun/nio/sctp/SctpChannel/CloseDescriptors.java test should be resilient to lsof warnings
  • edd9d1c: 8274330: Incorrect encoding of the DistributionPointName object in IssuingDistributionPointExtension
  • 980c50d: 8272562: C2: assert(false) failed: Bad graph detected in build_loop_late
  • 1dc8fa9: 8274340: [BACKOUT] JDK-8271880: Tighten condition for excluding regions from collecting cards with cross-references
  • ... and 19 more: https://git.openjdk.java.net/jdk/compare/961dcffc862a4830fbf26791835a98c12d4b513e...master

Your commit was automatically rebased without conflicts.

@openjdk openjdk bot closed this Sep 30, 2021
@openjdk openjdk bot added integrated and removed ready rfr labels Sep 30, 2021
@openjdk
Copy link

@openjdk openjdk bot commented Sep 30, 2021

@chhagedorn Pushed as commit dfc557c.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@chhagedorn chhagedorn deleted the JDK-8274406 branch Oct 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
4 participants