This is a virtual machine that runs DWARF call frame instructions.

Fields

columns: field_call = .{ },
stack: field_call = .{ },
current_row: Row = .{ },
cie_row: ?Row = null,

The result of executing the CIE’s initial_instructions

Types

Functions

fn deinit(self: *VirtualMachine, allocator: std.mem.Allocator) void

No documentation provided.

fn reset(self: *VirtualMachine) void

No documentation provided.

fn rowColumns(self: VirtualMachine, row: Row) []Column

Return a slice backed by the row’s non-CFA columns

fn runTo(self: *VirtualMachine, allocator: std.mem.Allocator, pc: u64, cie: dwarf.CommonInformationEntry, fde: dwarf.FrameDescriptionEntry, addr_size_bytes: u8, endian: std.builtin.Endian) !Row

Runs the CIE instructions, then the FDE instructions. Execution halts once the …

Runs the CIE instructions, then the FDE instructions. Execution halts once the row that corresponds to pc is known, and the row is returned.

fn runToNative(self: *VirtualMachine, allocator: std.mem.Allocator, pc: u64, cie: dwarf.CommonInformationEntry, fde: dwarf.FrameDescriptionEntry) !Row

No documentation provided.

fn step(self: *VirtualMachine, allocator: std.mem.Allocator, cie: dwarf.CommonInformationEntry, is_initial: bool, instruction: Instruction) !Row

Executes a single instruction. If this instruction is from the CIE, `is_initial…

Executes a single instruction. If this instruction is from the CIE, is_initial should be set. Returns the value of current_row before executing this instruction.