Struct rustc_passes::liveness::rwu_table::RWUTable [−][src]
Conceptually, this is like a Vec<Vec<RWU>>. But the number of
RWU`s can get very large, so it uses a more compact representation.
Fields
live_nodes: usizeTotal number of live nodes.
vars: usizeTotal number of variables.
words: Vec<u8>A compressed representation of RWUs.
Each word represents 2 different RWUs packed together. Each packed RWU
is stored in 4 bits: a reader bit, a writer bit, a used bit and a
padding bit.
The data for each live node is contiguous and starts at a word boundary, so there might be an unused space left.
live_node_words: usizeNumber of words per each live node.
Implementations
impl RWUTable[src]
const RWU_READER: u8[src]
const RWU_WRITER: u8[src]
const RWU_USED: u8[src]
const RWU_MASK: u8[src]
const RWU_BITS: usize[src]
Size of packed RWU in bits.
const WORD_BITS: usize[src]
Size of a word in bits.
const WORD_RWU_COUNT: usize[src]
Number of packed RWUs that fit into a single word.
pub(super) fn new(live_nodes: usize, vars: usize) -> RWUTable[src]
fn word_and_shift(&self, ln: LiveNode, var: Variable) -> (usize, u32)[src]
fn pick2_rows_mut(&mut self, a: LiveNode, b: LiveNode) -> (&mut [u8], &mut [u8])[src]
pub(super) fn copy(&mut self, dst: LiveNode, src: LiveNode)[src]
pub(super) fn union(&mut self, dst: LiveNode, src: LiveNode) -> bool[src]
Sets dst to the union of dst and src, returns true if dst was
changed.
pub(super) fn get_reader(&self, ln: LiveNode, var: Variable) -> bool[src]
pub(super) fn get_writer(&self, ln: LiveNode, var: Variable) -> bool[src]
pub(super) fn get_used(&self, ln: LiveNode, var: Variable) -> bool[src]
pub(super) fn get(&self, ln: LiveNode, var: Variable) -> RWU[src]
pub(super) fn set(&mut self, ln: LiveNode, var: Variable, rwu: RWU)[src]
Auto Trait Implementations
impl RefUnwindSafe for RWUTable
impl Send for RWUTable
impl Sync for RWUTable
impl Unpin for RWUTable
impl UnwindSafe for RWUTable
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,