-
Notifications
You must be signed in to change notification settings - Fork 5.8k
8338731: MemoryLayout::offsetHandle can return a negative offset #20662
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
Conversation
/csr needed |
👋 Welcome back mcimadamore! A progress list of the required criteria for merging this PR into |
@mcimadamore 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:
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 10 new commits pushed to the
Please see this link for an up-to-date comparison between the source branch of this pull request and the ➡️ To integrate this PR with the above commit message to the |
@mcimadamore has indicated that a compatibility and specification (CSR) request is needed for this pull request. @mcimadamore please create a CSR request for issue JDK-8338731 with the correct fix version. This pull request cannot be integrated until the CSR request is approved. |
@mcimadamore The following label will be automatically applied to this pull request:
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch.
@mcimadamore this pull request can not be integrated into git checkout offset_overflow
git fetch https://git.openjdk.org/jdk.git master
git merge FETCH_HEAD
# resolve conflicts and follow the instructions given by git merge
git commit -m "Merge master"
git push |
Unrelated: I wonder if the performance of:
and
Differ? |
They should have the same performance characteristics. They have different permissions for access checks, and since |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Merge ok ;-)
/integrate |
Going to push as commit 1ff9ac7.
Your commit was automatically rebased without conflicts. |
@mcimadamore Pushed as commit 1ff9ac7. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
When working on startup improvements, I noticed that the method handle returned by
MemoryLayout::offsetHandle
can overflow if the client calls the handle with a base offset that is too big.In other similar situations, the layout API always fails with
ArithmeticException
(seeMemoryLayout::scale
), so we should do the same here.The fix is to use a
Math::addExact(long, long)
for the outermost add operation in the computation of the offset method handle. That outermost computation in fact is the only one that can overflow: it is an addition between a user-provided base offsetB
and a layout offsetL
.L
is guaranteed not to overflow, by construction (asL
is derived from a layout path). ButB
+L
might overflow, so the new logic checks for that.Progress
Issues
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/20662/head:pull/20662
$ git checkout pull/20662
Update a local copy of the PR:
$ git checkout pull/20662
$ git pull https://git.openjdk.org/jdk.git pull/20662/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 20662
View PR using the GUI difftool:
$ git pr show -t 20662
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/20662.diff
Webrev
Link to Webrev Comment