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

pub(super) 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]

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]

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.