pub enum Pass {
Ignore,
Direct,
Pieces(Vec<Slot>),
Reference,
Memory,
}Expand description
How one value travels.
Variants§
Ignore
Nothing travels, which is void and an aggregate of no size.
Direct
The value itself. Every scalar is this.
Pieces(Vec<Slot>)
The object’s bytes, in these slots, which is what passing an aggregate in registers means once the object has been taken apart.
Reference
The address of a copy, in the place the value would have gone.
For an argument the caller makes the copy, and for a return value the caller passes the address of somewhere to put it, which is what the hidden first argument is.
Memory
The object’s own bytes, in the argument area, with no address anywhere.
This is SysV’s MEMORY class and AAPCS’s aggregate that ran out of registers. It is never
a return value: a return value that does not fit in registers is Pass::Reference.
Trait Implementations§
impl Eq for Pass
impl StructuralPartialEq for Pass
Auto Trait Implementations§
impl Freeze for Pass
impl RefUnwindSafe for Pass
impl Send for Pass
impl Sync for Pass
impl Unpin for Pass
impl UnsafeUnpin for Pass
impl UnwindSafe for Pass
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