Skip to main content

Rv32StackUsage

Struct Rv32StackUsage 

Source
pub struct Rv32StackUsage {
    pub contract_address: ContractAddress,
    pub method_id: u64,
    pub sp_initial: u32,
    pub sp_min: u32,
}
Expand description

What an rv32 guest did with its stack pointer over one invocation.

hogd records one of these per rv32 invocation, when the invocation ends, in Debug builds with HOGD_RV32_STACK_USAGE on – which the prebuilt test_ffi library this crate links is. sp_initial is the first value the guest stored to sp (x2): the stack top its _start established. sp_min is the lowest, the deepest point the stack reached, so bytes_used is their difference. A fused lui sp; addi sp, sp, imm prologue stores only the constant it materializes, so sp_initial is the top the program established, not the lui intermediate.

Fields§

§contract_address: ContractAddress

The invoked contract.

§method_id: u64

The invoked method id.

§sp_initial: u32

First value the guest wrote to sp, or SP_UNWRITTEN.

§sp_min: u32

Lowest value the guest wrote to sp, or SP_UNWRITTEN.

Implementations§

Source§

impl Rv32StackUsage

Source

pub fn wrote_sp(&self) -> bool

True if the guest wrote sp at all.

Source

pub fn bytes_used(&self) -> Option<u32>

Bytes of stack the invocation used: sp_initial - sp_min. None if the guest never wrote sp.

Trait Implementations§

Source§

impl Clone for Rv32StackUsage

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Rv32StackUsage

Source§

impl Debug for Rv32StackUsage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Rv32StackUsage

Source§

impl PartialEq for Rv32StackUsage

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Rv32StackUsage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> StaticIfNoAlloc for T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.