diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-12-05 11:15:59 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-12-05 20:07:25 +1100 |
| commit | 6ee1a7aaa02f7e7713c8b60d785610983dc69ee7 (patch) | |
| tree | c159f95a3fb0745e097dde52bece0d24cf6828be /compiler/rustc_mir_dataflow/src/framework/lattice.rs | |
| parent | dff5ce68816edaf8a8740db60a8aa735641939f7 (diff) | |
| download | rust-6ee1a7aaa02f7e7713c8b60d785610983dc69ee7.tar.gz rust-6ee1a7aaa02f7e7713c8b60d785610983dc69ee7.zip | |
Introduce `MixedBitSet`.
It just uses `BitSet` for small/medium sizes (<= 2048 bits) and `ChunkedBitSet` for larger sizes. This is good because `ChunkedBitSet` is slow and memory-hungry at smaller sizes.
Diffstat (limited to 'compiler/rustc_mir_dataflow/src/framework/lattice.rs')
| -rw-r--r-- | compiler/rustc_mir_dataflow/src/framework/lattice.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/rustc_mir_dataflow/src/framework/lattice.rs b/compiler/rustc_mir_dataflow/src/framework/lattice.rs index e2b56aedca3..852099e2ac8 100644 --- a/compiler/rustc_mir_dataflow/src/framework/lattice.rs +++ b/compiler/rustc_mir_dataflow/src/framework/lattice.rs @@ -40,7 +40,7 @@ use std::iter; -use rustc_index::bit_set::{BitSet, ChunkedBitSet}; +use rustc_index::bit_set::{BitSet, ChunkedBitSet, MixedBitSet}; use rustc_index::{Idx, IndexVec}; use crate::framework::BitSetExt; @@ -132,6 +132,12 @@ impl<T: Idx> JoinSemiLattice for ChunkedBitSet<T> { } } +impl<T: Idx> JoinSemiLattice for MixedBitSet<T> { + fn join(&mut self, other: &Self) -> bool { + self.union(other) + } +} + /// Extends a type `T` with top and bottom elements to make it a partially ordered set in which no /// value of `T` is comparable with any other. /// |
