pub struct ControlFlowGraph {
pub blocks: Vec<BasicBlock>,
pub edges: Vec<Edge>,
pub instructions: Vec<Instruction>,
/* private fields */
}Expand description
Control flow graph for a single Lua function/chunk.
Fields§
§blocks: Vec<BasicBlock>§edges: Vec<Edge>§instructions: Vec<Instruction>Implementations§
Source§impl ControlFlowGraph
impl ControlFlowGraph
Sourcepub fn build(raw_instructions: &[u32]) -> Self
pub fn build(raw_instructions: &[u32]) -> Self
Build a CFG from a slice of raw 32-bit Lua 5.1 instructions.
Sourcepub fn block_of(&self, pc: usize) -> usize
pub fn block_of(&self, pc: usize) -> usize
Get the block ID that contains the given instruction index.
Sourcepub fn block(&self, id: usize) -> &BasicBlock
pub fn block(&self, id: usize) -> &BasicBlock
Get a block by its ID.
Sourcepub fn block_instructions(&self, block: &BasicBlock) -> &[Instruction]
pub fn block_instructions(&self, block: &BasicBlock) -> &[Instruction]
Get instructions in a block.
Sourcepub fn num_blocks(&self) -> usize
pub fn num_blocks(&self) -> usize
Number of basic blocks.
Trait Implementations§
Source§impl Debug for ControlFlowGraph
impl Debug for ControlFlowGraph
Auto Trait Implementations§
impl Freeze for ControlFlowGraph
impl RefUnwindSafe for ControlFlowGraph
impl Send for ControlFlowGraph
impl Sync for ControlFlowGraph
impl Unpin for ControlFlowGraph
impl UnsafeUnpin for ControlFlowGraph
impl UnwindSafe for ControlFlowGraph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<I, T> ExtractContext<I, ()> for T
impl<I, T> ExtractContext<I, ()> for T
Source§fn extract_context(self, _original_input: I)
fn extract_context(self, _original_input: I)
Given the context attached to a nom error, and given the original
input to the nom parser, extract more the useful context information. Read more
Source§impl<T> Indentable for Twhere
T: Display,
impl<T> Indentable for Twhere
T: Display,
Source§fn indented_skip_initial(self, indent: &str) -> IndentedSkipIntial<'_, Self>
fn indented_skip_initial(self, indent: &str) -> IndentedSkipIntial<'_, Self>
Source§impl<I> RecreateContext<I> for I
impl<I> RecreateContext<I> for I
Source§fn recreate_context(_original_input: I, tail: I) -> I
fn recreate_context(_original_input: I, tail: I) -> I
Given the original input, as well as the context reported by nom,
recreate a context in the original string where the error occurred. Read more