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

8244975: [lworld] Investigate if VM can implement Object::hashCode by calling ValueBootstrapMethods for inline types #136

Closed
wants to merge 8 commits into from

Conversation

MrSimms
Copy link
Member

@MrSimms MrSimms commented Aug 5, 2020

Use ValueBootstrapMethods for Object::hashCode()


Progress

  • Change must not contain extraneous whitespace

Issue

  • JDK-8244975: [lworld] Investigate if VM can implement Object::hashCode by calling ValueBootstrapMethods for inline types

Reviewers

Download

$ git fetch https://git.openjdk.java.net/valhalla pull/136/head:pull/136
$ git checkout pull/136

… calling ValueBootstrapMethods for inline types
@bridgekeeper
Copy link

bridgekeeper bot commented Aug 5, 2020

👋 Welcome back dsimms! A progress list of the required criteria for merging this PR into lworld will be added to the body of your pull request.

@openjdk
Copy link

openjdk bot commented Aug 5, 2020

@MrSimms This change now passes all automated pre-integration checks, type /integrate in a new comment to proceed. After integration, the commit message will be:

8244975: [lworld] Investigate if VM can implement Object::hashCode by calling ValueBootstrapMethods for inline types

Reviewed-by: sadayapalam, mchung
  • If you would like to add a summary, use the /summary command.
  • To credit additional contributors, use the /contributor command.
  • To add additional solved issues, use the /issue command.

Since the source branch of this PR was last updated there have been 5 commits pushed to the lworld branch:

  • 67a019a: [lworld] clean up VarHandle support for inline type
  • 59d8f6b: 8251046: [lworld] [lw3] C1 should avoid heap allocations in withfield when possible
  • 660aa19: 8251107: [lworld] test lworld-values/TopInterfaceNegativeTest.java is failing
  • 349b22a: 8251116: [lworld] test lworld-values/ValuesAsRefs.java failing.
  • f7f6929: 8250877: [lworld] Remove special acmp handling for isSubstitutable0 method in the JIT

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid automatic rebasing, please merge lworld into your branch, and then specify the current head hash when integrating, like this: /integrate 67a019a56d4770bad226e400c228181330400c02.

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

@mlbridge
Copy link

mlbridge bot commented Aug 5, 2020

Webrevs

@openjdk openjdk bot removed ready rfr labels Aug 7, 2020
Copy link
Collaborator

@sadayapalam sadayapalam left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 for javac changes, assuming tests are all green

@sadayapalam
Copy link
Collaborator

There will be follow on work taken up independently for JDK-8244560 - There is still some discussion that needs to happen for the right behavior when an inline type also happens to be a record, but that can be tackled separately as a javac work item

@MrSimms
Copy link
Member Author

MrSimms commented Aug 10, 2020

+1 for javac changes, assuming tests are all green

Looks like I did break something:
ValueModifierTest.java:16:28: compiler.err.override.meth: (compiler.misc.cant.override: toString(), compiler.misc.anonymous.class: ValueModifierTest$3, toString(), value), final

rather than .out file:

ValueModifierTest.java:16:28: compiler.err.override.meth: (compiler.misc.cant.override: hashCode(), compiler.misc.anonymous.class: ValueModifierTest$3, hashCode(), value), final

Not sure I completely understand the test...ahh, yeah I do, no longer generate hashCode, but toString was

@mlchung
Copy link
Member

mlchung commented Aug 10, 2020

This looks good to me. I made a small clean up on javac Gen::synthesizeValueMethod method to remove the switch statement.

Copy link
Member

@mlchung mlchung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

approved

@MrSimms
Copy link
Member Author

MrSimms commented Aug 11, 2020

/integrate

@openjdk openjdk bot closed this Aug 11, 2020
@openjdk openjdk bot added the integrated label Aug 11, 2020
@openjdk
Copy link

openjdk bot commented Aug 11, 2020

@MrSimms The following commits have been pushed to lworld since your change was applied:

  • 67a019a: [lworld] clean up VarHandle support for inline type
  • 59d8f6b: 8251046: [lworld] [lw3] C1 should avoid heap allocations in withfield when possible
  • 660aa19: 8251107: [lworld] test lworld-values/TopInterfaceNegativeTest.java is failing
  • 349b22a: 8251116: [lworld] test lworld-values/ValuesAsRefs.java failing.
  • f7f6929: 8250877: [lworld] Remove special acmp handling for isSubstitutable0 method in the JIT

Your commit was automatically rebased without conflicts.

Pushed as commit f891f43.

@MrSimms MrSimms deleted the 8244975 branch August 11, 2020 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

4 participants