Struct rustc_passes::liveness::rwu_table::RWUTable [−][src]
pub(super) struct RWUTable {
live_nodes: usize,
vars: usize,
words: Vec<u8>,
live_node_words: usize,
}Expand description
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: usizeExpand description
Total number of live nodes.
vars: usizeExpand description
Total number of variables.
words: Vec<u8>Expand description
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: usizeExpand description
Number of words per each live node.
Implementations
impl RWUTable[src]
impl RWUTable[src]const RWU_READER: u8[src]
const RWU_WRITER: u8[src]
const RWU_USED: u8[src]
const RWU_MASK: u8[src]
const WORD_RWU_COUNT: usize[src]
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]
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.