winch_codegen::isa

Enum CallingConvention

Source
pub enum CallingConvention {
    SystemV,
    WindowsFastcall,
    AppleAarch64,
    Default,
}
Expand description

Calling conventions supported by Winch. Winch supports a variation of the calling conventions defined in this enum plus an internal default calling convention.

This enum is a reduced subset of the calling conventions defined in cranelift_codegen::isa::CallConv. Introducing this enum makes it easier to enforce the invariant of all the calling conventions supported by Winch.

The main difference between the system calling conventions defined in this enum and their native counterparts is how multiple returns are handled. Given that Winch is not meant to be a standalone code generator, the code it generates is tightly coupled to how Wasmtime expects multiple returns to be handled: the first return in a register, dictated by the calling convention and the rest, if any, via a return pointer.

Variants§

§

SystemV

§

WindowsFastcall

§

AppleAarch64

§

Default

The default calling convention for Winch. It largely follows SystemV for parameter and result handling. This calling convention is part of Winch’s default ABI crate::abi::ABI.

Implementations§

Source§

impl CallingConvention

Source

pub fn is_default(&self) -> bool

Returns true if the current calling convention is Default.

Trait Implementations§

Source§

impl Clone for CallingConvention

Source§

fn clone(&self) -> CallingConvention

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for CallingConvention

Source§

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

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

impl Copy for CallingConvention

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.