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
impl CallingConvention
Sourcepub fn is_default(&self) -> bool
pub fn is_default(&self) -> bool
Returns true if the current calling convention is Default
.
Trait Implementations§
Source§impl Clone for CallingConvention
impl Clone for CallingConvention
Source§fn clone(&self) -> CallingConvention
fn clone(&self) -> CallingConvention
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for CallingConvention
impl Debug for CallingConvention
impl Copy for CallingConvention
Auto Trait Implementations§
impl Freeze for CallingConvention
impl RefUnwindSafe for CallingConvention
impl Send for CallingConvention
impl Sync for CallingConvention
impl Unpin for CallingConvention
impl UnwindSafe for CallingConvention
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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