[−][src]Struct rustc_passes::liveness::rwu_table::RWUTable
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]
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]
live_nodes: usize,
vars: usize
) -> RWUTable
pub(in liveness::rwu_table) fn word_and_shift(
&self,
ln: LiveNode,
var: Variable
) -> (usize, u32)[src]
&self,
ln: LiveNode,
var: Variable
) -> (usize, u32)
pub(in liveness::rwu_table) fn pick2_rows_mut(
&mut self,
a: LiveNode,
b: LiveNode
) -> (&mut [u8], &mut [u8])[src]
&mut self,
a: LiveNode,
b: LiveNode
) -> (&mut [u8], &mut [u8])
pub(in liveness) fn copy(
&mut self,
dst: LiveNode,
src: LiveNode
)[src]
&mut self,
dst: LiveNode,
src: LiveNode
)
pub(in liveness) fn union(
&mut self,
dst: LiveNode,
src: LiveNode
) -> bool[src]
&mut self,
dst: LiveNode,
src: LiveNode
) -> bool
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]
&self,
ln: LiveNode,
var: Variable
) -> bool
pub(in liveness) fn get_writer(
&self,
ln: LiveNode,
var: Variable
) -> bool[src]
&self,
ln: LiveNode,
var: Variable
) -> bool
pub(in liveness) fn get_used(
&self,
ln: LiveNode,
var: Variable
) -> bool[src]
&self,
ln: LiveNode,
var: Variable
) -> bool
pub(in liveness) fn get(
&self,
ln: LiveNode,
var: Variable
) -> RWU[src]
&self,
ln: LiveNode,
var: Variable
) -> RWU
pub(in liveness) fn set(
&mut self,
ln: LiveNode,
var: Variable,
rwu: RWU
)[src]
&mut self,
ln: LiveNode,
var: Variable,
rwu: RWU
)
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]
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>,