Skip to content

Commit e35fb55

Browse files
Tage Johanssonlqd
Tage Johansson
authored andcommitted
Rename ThinBitSet to DenseBitSet.
1 parent 99fc5a1 commit e35fb55

File tree

3 files changed

+38
-419
lines changed

3 files changed

+38
-419
lines changed

compiler/rustc_index/src/bit_set.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
#![expect(unreachable_pub)]
22
#![allow(dead_code)]
3+
mod dense_bit_set;
34
mod old_dense_bit_set;
4-
mod thin_bit_set;
5-
mod twin_bit_set;
65
use std::marker::PhantomData;
76
#[cfg(not(feature = "nightly"))]
87
use std::mem;
@@ -11,11 +10,11 @@ use std::rc::Rc;
1110
use std::{fmt, iter};
1211

1312
use Chunk::*;
13+
pub use dense_bit_set::BitIter;
1414
pub use old_dense_bit_set::{DenseBitSet, GrowableBitSet};
1515
#[cfg(feature = "nightly")]
1616
use rustc_macros::{Decodable_NoContext, Encodable_NoContext};
1717
use smallvec::{SmallVec, smallvec};
18-
pub use thin_bit_set::BitIter;
1918

2019
use crate::{Idx, IndexVec};
2120

compiler/rustc_index/src/bit_set/thin_bit_set.rs renamed to compiler/rustc_index/src/bit_set/dense_bit_set.rs

+36-36
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use crate::Idx;
4343
/// is not garranteed though as we store the domain size rounded up to the next multiple of
4444
/// [`WORD_BITS`].
4545
#[repr(C)]
46-
pub union ThinBitSet<T> {
46+
pub union DenseBitSet<T> {
4747
/// The bit set fits in a single [`Word`] stored inline on the stack.
4848
///
4949
/// The most significant bit is set to 1 to distinguish this from the other variants. You
@@ -72,7 +72,7 @@ pub union ThinBitSet<T> {
7272
marker: PhantomData<T>,
7373
}
7474

75-
impl<T> ThinBitSet<T> {
75+
impl<T> DenseBitSet<T> {
7676
/// The maximum domain size that could be stored inlined on the stack.
7777
pub const INLINE_CAPACITY: usize = WORD_BITS - 1;
7878

@@ -463,7 +463,7 @@ impl<T> ThinBitSet<T> {
463463
super::bit_relations_inherent_impls! {}
464464
}
465465

466-
impl<T> BitRelations<ThinBitSet<T>> for ThinBitSet<T> {
466+
impl<T> BitRelations<DenseBitSet<T>> for DenseBitSet<T> {
467467
#[inline(always)]
468468
fn union(&mut self, other: &Self) -> bool {
469469
if self.is_empty_unallocated() {
@@ -505,7 +505,7 @@ impl<T> BitRelations<ThinBitSet<T>> for ThinBitSet<T> {
505505
}
506506
}
507507

508-
impl<T: Idx> ThinBitSet<T> {
508+
impl<T: Idx> DenseBitSet<T> {
509509
/// Checks if the bit set contains `elem`.
510510
#[inline(always)]
511511
pub fn contains(&self, elem: T) -> bool {
@@ -709,7 +709,7 @@ impl<T: Idx> ThinBitSet<T> {
709709
}
710710
}
711711

712-
impl<T: Idx> BitRelations<ChunkedBitSet<T>> for ThinBitSet<T> {
712+
impl<T: Idx> BitRelations<ChunkedBitSet<T>> for DenseBitSet<T> {
713713
fn union(&mut self, other: &ChunkedBitSet<T>) -> bool {
714714
other.iter().fold(false, |changed, elem| self.insert(elem) || changed)
715715
}
@@ -778,7 +778,7 @@ impl<T: Idx> BitRelations<ChunkedBitSet<T>> for ThinBitSet<T> {
778778
}
779779
}
780780

781-
impl<S: Encoder, T> Encodable<S> for ThinBitSet<T> {
781+
impl<S: Encoder, T> Encodable<S> for DenseBitSet<T> {
782782
#[inline(never)] // FIXME: For profiling purposes
783783
fn encode(&self, s: &mut S) {
784784
/* FIXME: This is new incompatable encoding
@@ -821,7 +821,7 @@ impl<S: Encoder, T> Encodable<S> for ThinBitSet<T> {
821821
}
822822
}
823823

824-
impl<D: Decoder, T> Decodable<D> for ThinBitSet<T> {
824+
impl<D: Decoder, T> Decodable<D> for DenseBitSet<T> {
825825
#[inline(never)] // FIXME: For profiling purposes
826826
fn decode(d: &mut D) -> Self {
827827
/* FIXME: This is new incompatable decoding.
@@ -833,7 +833,7 @@ impl<D: Decoder, T> Decodable<D> for ThinBitSet<T> {
833833
let n_words = word as usize;
834834
assert!(
835835
n_words > 0,
836-
"ThinBitSet decoder error: At least one word must be stored with the `on_heap` variant."
836+
"DenseBitSet decoder error: At least one word must be stored with the `on_heap` variant."
837837
);
838838
let mut on_heap = BitSetOnHeap::new_empty(n_words);
839839
@@ -846,7 +846,7 @@ impl<D: Decoder, T> Decodable<D> for ThinBitSet<T> {
846846
*word = Word::decode(d);
847847
}
848848
849-
ThinBitSet { on_heap: ManuallyDrop::new(on_heap) }
849+
DenseBitSet { on_heap: ManuallyDrop::new(on_heap) }
850850
} else {
851851
// Both the `inline` and `empty_unallocated` variants are encoded by one `Word`. We can
852852
// just assume the `inline` variant because the `empty_unallocated` variant is smaller
@@ -865,7 +865,7 @@ impl<D: Decoder, T> Decodable<D> for ThinBitSet<T> {
865865
}
866866
}
867867

868-
impl<T> Clone for ThinBitSet<T> {
868+
impl<T> Clone for DenseBitSet<T> {
869869
#[inline(always)]
870870
fn clone(&self) -> Self {
871871
if self.is_inline() {
@@ -882,7 +882,7 @@ impl<T> Clone for ThinBitSet<T> {
882882
}
883883
}
884884

885-
impl<T> Drop for ThinBitSet<T> {
885+
impl<T> Drop for DenseBitSet<T> {
886886
#[inline(always)]
887887
fn drop(&mut self) {
888888
// Deallocate if `self` is not inlined.
@@ -1108,13 +1108,13 @@ impl<'a, T: Idx> Iterator for BitIter<'a, T> {
11081108

11091109
impl<'a, T: Idx> FusedIterator for BitIter<'a, T> {}
11101110

1111-
impl<T: Idx> fmt::Debug for ThinBitSet<T> {
1111+
impl<T: Idx> fmt::Debug for DenseBitSet<T> {
11121112
fn fmt(&self, w: &mut fmt::Formatter<'_>) -> fmt::Result {
11131113
w.debug_list().entries(self.iter()).finish()
11141114
}
11151115
}
11161116

1117-
impl<T> PartialEq for ThinBitSet<T> {
1117+
impl<T> PartialEq for DenseBitSet<T> {
11181118
#[inline]
11191119
fn eq(&self, other: &Self) -> bool {
11201120
if self.is_inline() {
@@ -1153,9 +1153,9 @@ impl<T> PartialEq for ThinBitSet<T> {
11531153
}
11541154
}
11551155

1156-
impl<T> Eq for ThinBitSet<T> {}
1156+
impl<T> Eq for DenseBitSet<T> {}
11571157

1158-
impl<T> Hash for ThinBitSet<T> {
1158+
impl<T> Hash for DenseBitSet<T> {
11591159
#[inline]
11601160
fn hash<H: Hasher>(&self, hasher: &mut H) {
11611161
if self.is_inline() {
@@ -1186,7 +1186,7 @@ impl<T> Hash for ThinBitSet<T> {
11861186
/// to or greater than the domain size.
11871187
#[derive(Clone, PartialEq)]
11881188
pub struct GrowableBitSet<T> {
1189-
bit_set: ThinBitSet<T>,
1189+
bit_set: DenseBitSet<T>,
11901190
}
11911191

11921192
impl<T> Default for GrowableBitSet<T> {
@@ -1204,28 +1204,28 @@ impl<T> GrowableBitSet<T> {
12041204

12051205
if self.bit_set.is_inline() {
12061206
// The set must change from being inlined to allocate on the heap.
1207-
debug_assert!(min_domain_size > ThinBitSet::<T>::INLINE_CAPACITY);
1207+
debug_assert!(min_domain_size > DenseBitSet::<T>::INLINE_CAPACITY);
12081208

1209-
let mut new_bit_set = ThinBitSet::new_empty(min_domain_size);
1209+
let mut new_bit_set = DenseBitSet::new_empty(min_domain_size);
12101210
if !self.bit_set.is_empty() {
12111211
// SAFETY: We know that `self.is_inline()` is true.
1212-
let word = unsafe { self.bit_set.inline } ^ ThinBitSet::<T>::IS_INLINE_TAG_BIT;
1212+
let word = unsafe { self.bit_set.inline } ^ DenseBitSet::<T>::IS_INLINE_TAG_BIT;
12131213
new_bit_set.on_heap_get_or_alloc().as_mut_slice()[0] = word;
12141214
}
12151215
self.bit_set = new_bit_set;
12161216
} else if self.bit_set.is_empty_unallocated() {
1217-
self.bit_set = ThinBitSet::new_empty(min_domain_size);
1217+
self.bit_set = DenseBitSet::new_empty(min_domain_size);
12181218
} else {
12191219
self.bit_set.on_heap_mut().unwrap().ensure_capacity(min_domain_size);
12201220
}
12211221
}
12221222

12231223
pub fn new_empty() -> GrowableBitSet<T> {
1224-
GrowableBitSet { bit_set: ThinBitSet::new_empty(0) }
1224+
GrowableBitSet { bit_set: DenseBitSet::new_empty(0) }
12251225
}
12261226

12271227
pub fn with_capacity(capacity: usize) -> GrowableBitSet<T> {
1228-
GrowableBitSet { bit_set: ThinBitSet::new_empty(capacity) }
1228+
GrowableBitSet { bit_set: DenseBitSet::new_empty(capacity) }
12291229
}
12301230

12311231
/// Insert the element with index `idx`. Returns `true` if the set has changed.
@@ -1271,13 +1271,13 @@ impl<T: Idx> GrowableBitSet<T> {
12711271
}
12721272
}
12731273

1274-
impl<T> From<ThinBitSet<T>> for GrowableBitSet<T> {
1275-
fn from(bit_set: ThinBitSet<T>) -> Self {
1274+
impl<T> From<DenseBitSet<T>> for GrowableBitSet<T> {
1275+
fn from(bit_set: DenseBitSet<T>) -> Self {
12761276
Self { bit_set }
12771277
}
12781278
}
12791279

1280-
impl<T> From<GrowableBitSet<T>> for ThinBitSet<T> {
1280+
impl<T> From<GrowableBitSet<T>> for DenseBitSet<T> {
12811281
fn from(bit_set: GrowableBitSet<T>) -> Self {
12821282
bit_set.bit_set
12831283
}
@@ -1476,9 +1476,9 @@ mod tests {
14761476
fn test_with_domain_size(domain_size: usize) {
14771477
const TEST_ITERATIONS: u32 = 512;
14781478

1479-
let mut set_1 = ThinBitSet::<usize>::new_empty(domain_size);
1479+
let mut set_1 = DenseBitSet::<usize>::new_empty(domain_size);
14801480
let mut set_1_reference = IndexVec::<usize, bool>::from_elem_n(false, domain_size);
1481-
let mut set_2 = ThinBitSet::<usize>::new_empty(domain_size);
1481+
let mut set_2 = DenseBitSet::<usize>::new_empty(domain_size);
14821482
let mut set_2_reference = IndexVec::<usize, bool>::from_elem_n(false, domain_size);
14831483

14841484
let hasher = BuildHasherDefault::<DefaultHasher>::new();
@@ -1613,12 +1613,12 @@ mod tests {
16131613
97..100 => {
16141614
// Test new_filled().
16151615
if rng.next_bool() {
1616-
set_1 = ThinBitSet::new_filled(domain_size);
1616+
set_1 = DenseBitSet::new_filled(domain_size);
16171617
for x in set_1_reference.iter_mut() {
16181618
*x = true;
16191619
}
16201620
} else {
1621-
set_2 = ThinBitSet::new_filled(domain_size);
1621+
set_2 = DenseBitSet::new_filled(domain_size);
16221622
for x in set_2_reference.iter_mut() {
16231623
*x = true;
16241624
}
@@ -1687,7 +1687,7 @@ mod tests {
16871687
set_1.encode(&mut encoder);
16881688

16891689
let mut decoder = DecoderLittleEndian::new(&encoder.bytes);
1690-
let decoded = ThinBitSet::<usize>::decode(&mut decoder);
1690+
let decoded = DenseBitSet::<usize>::decode(&mut decoder);
16911691
assert_eq!(
16921692
decoder.position(),
16931693
encoder.bytes.len(),
@@ -1704,7 +1704,7 @@ mod tests {
17041704
fn test_relations_with_chunked_set(domain_size: usize) {
17051705
const TEST_ITERATIONS: u32 = 64;
17061706

1707-
let mut dense_set = ThinBitSet::<usize>::new_empty(domain_size);
1707+
let mut dense_set = DenseBitSet::<usize>::new_empty(domain_size);
17081708
let mut chunked_set = ChunkedBitSet::new_empty(domain_size);
17091709

17101710
let mut rng = Rng::new(42);
@@ -1786,11 +1786,11 @@ mod tests {
17861786
}
17871787

17881788
#[test]
1789-
fn test_thin_bit_set() {
1789+
fn test_dense_bit_set() {
17901790
assert_eq!(
1791-
size_of::<ThinBitSet<usize>>(),
1791+
size_of::<DenseBitSet<usize>>(),
17921792
size_of::<Word>(),
1793-
"ThinBitSet should have the same size as a Word"
1793+
"DenseBitSet should have the same size as a Word"
17941794
);
17951795

17961796
test_with_domain_size(0);
@@ -1825,8 +1825,8 @@ mod tests {
18251825
for _ in 0..TEST_ITERATIONS {
18261826
match rng.next() % 100 {
18271827
0..30 => {
1828-
// Insert an element in the `0..=(ThinBitSet::INLINE_CAPACITY + 2)` range.
1829-
let elem = rng.next() % (ThinBitSet::<usize>::INLINE_CAPACITY + 3);
1828+
// Insert an element in the `0..=(DenseBitSet::INLINE_CAPACITY + 2)` range.
1829+
let elem = rng.next() % (DenseBitSet::<usize>::INLINE_CAPACITY + 3);
18301830
set.insert(elem);
18311831
reference_set.insert(elem);
18321832
}

0 commit comments

Comments
 (0)