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

8280460: MemorySegment::allocateNative should be tolerant of zero-sized allocation requests #650

Closed

Conversation

mcimadamore
Copy link
Collaborator

@mcimadamore mcimadamore commented Feb 22, 2022

This patch addresses the issues discussed here:

https://mail.openjdk.java.net/pipermail/panama-dev/2022-January/016071.html

And makes MemorySegment::allocateNative tolerand of zero-sized allocation requests. After evaluating a number of alternatives, I have decided to do what ByteBuffer also does, that is, always compute the size of the allocation as max(size, 1L).

This means that we always perform some allocation - which works better with alignment constraints (e.g. the address you get back is aligned as per request; this is a corner case, but makes the API more consistent).

I've tweaked the javadoc to reflect that (and also added some javadoc to SegmentAllocator as well), and added a test for various kinds of native segments, created both safely and unsafely.


Progress

  • Change must not contain extraneous whitespace
  • Change must be properly reviewed

Issue

  • JDK-8280460: MemorySegment::allocateNative should be tolerant of zero-sized allocation requests

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/panama-foreign pull/650/head:pull/650
$ git checkout pull/650

Update a local copy of the PR:
$ git checkout pull/650
$ git pull https://git.openjdk.java.net/panama-foreign pull/650/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 650

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

Using diff file

Download this PR as a diff file:
https://git.openjdk.java.net/panama-foreign/pull/650.diff

@bridgekeeper
Copy link

bridgekeeper bot commented Feb 22, 2022

👋 Welcome back mcimadamore! A progress list of the required criteria for merging this PR into foreign-preview 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 Ready for review label Feb 22, 2022
@mlbridge
Copy link

mlbridge bot commented Feb 22, 2022

Webrevs

@openjdk
Copy link

openjdk bot commented Feb 22, 2022

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

8280460: MemorySegment::allocateNative should be tolerant of zero-sized allocation requests

Reviewed-by: jvernee

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 4 new commits pushed to the foreign-preview branch:

  • 5620d82: 8282215: Handle failures when initializing SystemLookup
  • a225c6e: Remove unused functions and includes
  • 06223fb: 8280721: Rewrite binding of foreign classes to use javaClasses.h/cpp
  • afad8e0: 8282069: Set correct alignment constraints on ValueLayout constants

Please see this link for an up-to-date comparison between the source branch of this pull request and the foreign-preview 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 foreign-preview branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready Ready to be integrated label Feb 22, 2022
@mcimadamore
Copy link
Collaborator Author

/integrate

@openjdk
Copy link

openjdk bot commented Feb 22, 2022

Going to push as commit 8403a4d.
Since your change was applied there have been 4 commits pushed to the foreign-preview branch:

  • 5620d82: 8282215: Handle failures when initializing SystemLookup
  • a225c6e: Remove unused functions and includes
  • 06223fb: 8280721: Rewrite binding of foreign classes to use javaClasses.h/cpp
  • afad8e0: 8282069: Set correct alignment constraints on ValueLayout constants

Your commit was automatically rebased without conflicts.

@openjdk openjdk bot added the integrated Pull request has been integrated label Feb 22, 2022
@openjdk openjdk bot closed this Feb 22, 2022
@openjdk openjdk bot removed ready Ready to be integrated rfr Ready for review labels Feb 22, 2022
@openjdk
Copy link

openjdk bot commented Feb 22, 2022

@mcimadamore Pushed as commit 8403a4d.

💡 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
integrated Pull request has been integrated
2 participants