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

8262198: Overhaul bitfield parsing logic #459

Closed

Conversation

@mcimadamore
Copy link
Collaborator

@mcimadamore mcimadamore commented Feb 23, 2021

This parsing stratgey cannot (by definition) fail - so, moving forward there will be no more exceptions coming from this side of the code. Of course, since we no longer have container classification, when bitfield support is added to the backend, things might be a bit tricker; however I realized that, since the layout is well-formed, the backend can always use the layout API to query the offset and size of a given bitfield, and decide on the best strategy to get there (e.g. get the closed 8/16/32/64-bit word and apply some bitmasking). So, perhaps things don't change much in terms of code generation support.

This patch fixes a small bug in Parser, where we where creating the same tree twice (!!). There are some small tweaks to TreeMaker, to work with the new bitfield info coming out from RecordLayoutComputer, but overall nothing too difficult here.

Note that the BadBitfieldTest, which was previously asserting a jextract crash, has now turned into a positive test (and I've dropped the exclusion on Windows, since the test should now pass on all platforms).

[1] - rust-lang/rust-bindgen#743


Progress

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

Issue

Reviewers

Download

$ git fetch https://git.openjdk.java.net/panama-foreign pull/459/head:pull/459
$ git checkout pull/459

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Feb 23, 2021

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

Loading

@openjdk openjdk bot added the rfr label Feb 23, 2021
@mlbridge
Copy link

@mlbridge mlbridge bot commented Feb 23, 2021

Webrevs

Loading

Copy link
Member

@sundararajana sundararajana left a comment

LGTM

Loading

@openjdk
Copy link

@openjdk openjdk bot commented Feb 23, 2021

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

8262198: Overhaul bitfield parsing logic

Reviewed-by: sundar, 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 1 new commit pushed to the foreign-jextract branch:

  • 6c47c8d: 8262117: jextract crashes with javac compilation error "class u is already defined"

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

Loading

@openjdk openjdk bot added the ready label Feb 23, 2021
@mcimadamore
Copy link
Collaborator Author

@mcimadamore mcimadamore commented Feb 23, 2021

/integrate

Loading

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

@openjdk openjdk bot commented Feb 23, 2021

@mcimadamore Since your change was applied there has been 1 commit pushed to the foreign-jextract branch:

  • 6c47c8d: 8262117: jextract crashes with javac compilation error "class u is already defined"

Your commit was automatically rebased without conflicts.

Pushed as commit 6aa7d35.

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

Loading

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