-
Notifications
You must be signed in to change notification settings - Fork 13.4k
index: add method for checking range on DenseBitSet #141871
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
The Miri subtree was changed cc @rust-lang/miri |
This comment has been minimized.
This comment has been minimized.
001744c
to
4164a82
Compare
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.
Could you also add a unit test for contains_any
in compiler/rustc_index/src/bit_set/tests.rs
?
compiler/rustc_index/src/bit_set.rs
Outdated
let (start_word_index, start_mask) = word_index_and_mask(start); | ||
let (end_word_index, end_mask) = word_index_and_mask(end); | ||
|
||
if self.words[start_word_index] & (!start_mask | !(start_mask - 1)) != 0 { |
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.
It seems like !start_mask | !(start_mask - 1)
is always all ones. For example, if start_mask
is 0b001000
, then we have:
!(0b001000) | !(0b001000 - 1)
0b110111 | !(0b000111)
0b110111 | 0b111000
0b111111
I think maybe you just want !(start_mask - 1)
, but let me know if I misunderstood.
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.
Ah ok you're right, I tried to make it symmetric with the end_mask
bit but I missed that. Thanks!
@rustbot ready |
This comment has been minimized.
This comment has been minimized.
@bors r+ |
This comment has been minimized.
This comment has been minimized.
Gah, I think I know what's wrong. Should have let the tests run to the end locally, I think I fixed it and I'll push if so |
Should be good? I'll wait for the CI before re-requesting approval just to be safe |
@eholk you can r- this for now so it doesn't sit in the queue |
@bors r- |
Sure thing. Feel free to r=me once things are passing again, or ping me and I'll approve it again. |
@bors r=eholk |
@nia-e: 🔑 Insufficient privileges: Not in reviewers |
😔 |
@bors r+ rollup |
Rollup of 8 pull requests Successful merges: - #136687 (Improve the documentation of `Display` and `FromStr`, and their interactions) - #137306 (Remove `i128` and `u128` from `improper_ctypes_definitions`) - #138699 (build dist for x86_64-pc-solaris and sparcv9-sun-solaris) - #141250 (add s390x z17 target features) - #141467 (make `OsString::new` and `PathBuf::new` unstably const) - #141871 (index: add method for checking range on DenseBitSet) - #141888 (Use non-2015 edition paths in tests that do not test for their resolution) - #142000 (bootstrap: don't symlink source dir into stage0 sysroot) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of #141871 - nia-e:fix-bitset, r=eholk index: add method for checking range on DenseBitSet Micro-optimisation that Miri benefits from with the new isolated allocator for native-libs mode. Also possibly just a useful method to have on `DenseBitSet`
Rollup of 8 pull requests Successful merges: - rust-lang/rust#136687 (Improve the documentation of `Display` and `FromStr`, and their interactions) - rust-lang/rust#137306 (Remove `i128` and `u128` from `improper_ctypes_definitions`) - rust-lang/rust#138699 (build dist for x86_64-pc-solaris and sparcv9-sun-solaris) - rust-lang/rust#141250 (add s390x z17 target features) - rust-lang/rust#141467 (make `OsString::new` and `PathBuf::new` unstably const) - rust-lang/rust#141871 (index: add method for checking range on DenseBitSet) - rust-lang/rust#141888 (Use non-2015 edition paths in tests that do not test for their resolution) - rust-lang/rust#142000 (bootstrap: don't symlink source dir into stage0 sysroot) r? `@ghost` `@rustbot` modify labels: rollup
Micro-optimisation that Miri benefits from with the new isolated allocator for native-libs mode. Also possibly just a useful method to have on
DenseBitSet