Skip to content

Conversation

@kimbarrett
Copy link

@kimbarrett kimbarrett commented Mar 11, 2023

Please review this change that adds functions to BitMap for finding the last
set/clear bit in a range.

Testing:
mach5 tier1, including new gtesting for the new functions.


Progress

  • Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue

Issue

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/12988/head:pull/12988
$ git checkout pull/12988

Update a local copy of the PR:
$ git checkout pull/12988
$ git pull https://git.openjdk.org/jdk.git pull/12988/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 12988

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

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/12988.diff

@bridgekeeper
Copy link

bridgekeeper bot commented Mar 11, 2023

👋 Welcome back kbarrett! 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 Pull request is ready for review label Mar 11, 2023
@openjdk
Copy link

openjdk bot commented Mar 11, 2023

@kimbarrett The following label will be automatically applied to this pull request:

  • hotspot

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 hotspot-dev@openjdk.org label Mar 11, 2023
@mlbridge
Copy link

mlbridge bot commented Mar 11, 2023

Webrevs

@kimbarrett
Copy link
Author

kimbarrett commented Mar 19, 2023

I've improved find_first/last_bit_impl since the original PR commit.

(1) In find_last_bit_impl, testing the last bit and the last word has been
improved, shaving off an instruction or two (depending on platform). The
previous version incorrectly expected shifts to set condition codes.

(2) The previous version of find_last_bit_impl expected the compiler to CSE
merge the nearly (and now actually, because of the change above) identical
code for handling found bits in cword. But gcc (at least) doen't seem to do
that, so we do it manually. This doesn't have any performance cost, just saves
20-30% of the (inline) code size.

(3) Applied to find_first_bit_impl a similar technique to (2).

The manual tail merging is a little bit indirect. It might be that it would
be easier to understand by being explicit and using a goto.

Copy link
Member

@stefank stefank left a comment

Choose a reason for hiding this comment

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

Thanks for creating this PR. As we have discussed offline, this is not my preferred code style for these functions, but I'm happy to see this functionality being upstreamed, so consider this reviewed.

@openjdk
Copy link

openjdk bot commented Mar 20, 2023

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

8304016: Add BitMap find_last suite of functions

Reviewed-by: stefank, aboldtch

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 no new commits pushed to the master branch. If another commit should be pushed before you perform the /integrate command, your PR will be automatically rebased. If you prefer to avoid any potential 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 Pull request is ready to be integrated label Mar 20, 2023
Copy link
Member

@xmas92 xmas92 left a comment

Choose a reason for hiding this comment

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

The rewrite made the algorithm more readable, imo.

At some point I would like to type up the beg and end so it is clear that it is a range with [beg, end)

@kimbarrett
Copy link
Author

Thanks for reviews @stefank and @xmas92

@kimbarrett
Copy link
Author

/integrate

@openjdk
Copy link

openjdk bot commented Mar 20, 2023

Going to push as commit 2d0d057.

@openjdk openjdk bot added the integrated Pull request has been integrated label Mar 20, 2023
@openjdk openjdk bot closed this Mar 20, 2023
@openjdk openjdk bot removed ready Pull request is ready to be integrated rfr Pull request is ready for review labels Mar 20, 2023
@openjdk
Copy link

openjdk bot commented Mar 20, 2023

@kimbarrett Pushed as commit 2d0d057.

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

@kimbarrett kimbarrett deleted the find-last branch March 20, 2023 21:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hotspot hotspot-dev@openjdk.org integrated Pull request has been integrated

Development

Successfully merging this pull request may close these issues.

3 participants