[−][src]Struct rustc_passes::liveness::rwu_table::RWUTable

pub(in liveness) struct RWUTable {
    live_nodes: usize,
    vars: usize,
    words: Vec<u8>,
    live_node_words: usize,
}

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: usize

Total number of live nodes.

vars: usize

Total 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: usize

Number of words per each live node.

Implementations

impl RWUTable[src]

pub(in liveness::rwu_table) const RWU_READER: u8[src]

pub(in liveness::rwu_table) const RWU_WRITER: u8[src]

pub(in liveness::rwu_table) const RWU_USED: u8[src]

pub(in liveness::rwu_table) const RWU_MASK: u8[src]

pub(in liveness::rwu_table) const RWU_BITS: usize[src]

Size of packed RWU in bits.

pub(in liveness::rwu_table) const WORD_BITS: usize[src]

Size of a word in bits.

pub(in liveness::rwu_table) const WORD_RWU_COUNT: usize[src]

Number of packed RWUs that fit into a single word.

pub(in liveness) fn new(
    live_nodes: usize,
    vars: usize
) -> RWUTable
[src]

pub(in liveness::rwu_table) fn word_and_shift(
    &self,
    ln: LiveNode,
    var: Variable
) -> (usize, u32)
[src]

pub(in liveness::rwu_table) fn pick2_rows_mut(
    &mut self,
    a: LiveNode,
    b: LiveNode
) -> (&mut [u8], &mut [u8])
[src]

pub(in liveness) fn copy(
    &mut self,
    dst: LiveNode,
    src: LiveNode
)
[src]

pub(in liveness) 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(in liveness) fn get_reader(
    &self,
    ln: LiveNode,
    var: Variable
) -> bool
[src]

pub(in liveness) fn get_writer(
    &self,
    ln: LiveNode,
    var: Variable
) -> bool
[src]

pub(in liveness) fn get_used(
    &self,
    ln: LiveNode,
    var: Variable
) -> bool
[src]

pub(in liveness) fn get(
    &self,
    ln: LiveNode,
    var: Variable
) -> RWU
[src]

pub(in liveness) fn set(
    &mut self,
    ln: LiveNode,
    var: Variable,
    rwu: RWU
)
[src]

Auto Trait Implementations

impl RefUnwindSafe for RWUTable[src]

impl Send for RWUTable[src]

impl Sync for RWUTable[src]

impl Unpin for RWUTable[src]

impl UnwindSafe for RWUTable[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.