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

8255274: [PPC64, s390] wrong StringLatin1.indexOf version matched #820

Conversation

TheRealMDoerr
Copy link
Contributor

@TheRealMDoerr TheRealMDoerr commented Oct 22, 2020

PPC64 and s390 currently match indexOfChar_U also for StrIntrinsicNode::L. This leads to incorrect results of StringLatin1.indexOf and alreads breaks builds:
Optimizing the exploded image
Error occurred during initialization of boot layer

We need separate match rules for StrIntrinsicNode::U and StrIntrinsicNode::L.


Progress

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

Issue

  • JDK-8255274: [PPC64, s390] wrong StringLatin1.indexOf version matched

Reviewers

Download

$ git fetch https://git.openjdk.java.net/jdk pull/820/head:pull/820
$ git checkout pull/820

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Oct 22, 2020

👋 Welcome back mdoerr! 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 Oct 22, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Oct 22, 2020

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

@openjdk openjdk bot added the hotspot-compiler label Oct 22, 2020
Copy link
Contributor

@RealCLanger RealCLanger left a comment

Thanks for fixing this!

@openjdk
Copy link

@openjdk openjdk bot commented Oct 22, 2020

@TheRealMDoerr 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:

8255274: [PPC64, s390] wrong StringLatin1.indexOf version matched

Reviewed-by: clanger, rrich

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 16 new commits pushed to the master branch:

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 Oct 22, 2020
@mlbridge
Copy link

@mlbridge mlbridge bot commented Oct 22, 2020

Webrevs

@reinrich
Copy link
Contributor

@reinrich reinrich commented Oct 23, 2020

The fix looks correct.
But you are adding another 20 lines to an already humonguous file by duplicating a complex instruction form and the diff between the 2 variants is very small. This makes the file hardly readable... at least for humans.
Wouldn't it be possible to have just one instruction form that matches both variants and feed the predicate expression to the is_byte parameter of string_indexof_char?

@TheRealMDoerr
Copy link
Contributor Author

@TheRealMDoerr TheRealMDoerr commented Oct 23, 2020

Thanks for the reviews.
@reinrich That would be nice, but I'm not aware of an easy way to do this. I can't use "((StrIndexOfCharNode*)n)->encoding()" in the "ins_encode" because the Ideal node is only visible during "match".

Copy link
Contributor

@reinrich reinrich left a comment

Ok, I see. Would be a worthwhile enhancement to preserve information that allows for having just one instruction form.
You might want to change to format string to indicate which version is used. I leave it to your discretion.
Thanks again for fixing.

@TheRealMDoerr
Copy link
Contributor Author

@TheRealMDoerr TheRealMDoerr commented Oct 23, 2020

Thanks. I've adapted the format strings.

@TheRealMDoerr
Copy link
Contributor Author

@TheRealMDoerr TheRealMDoerr commented Oct 23, 2020

/integrate

@openjdk openjdk bot closed this Oct 23, 2020
@openjdk openjdk bot added integrated and removed ready rfr labels Oct 23, 2020
@TheRealMDoerr TheRealMDoerr deleted the 8255274_ppc64_s390_indexOfCharL branch Oct 23, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Oct 23, 2020

@TheRealMDoerr Since your change was applied there have been 16 commits pushed to the master branch:

Your commit was automatically rebased without conflicts.

Pushed as commit df79257.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hotspot-compiler integrated
3 participants