[−][src]Struct cranelift_codegen::binemit::MemoryCodeSink
A CodeSink
that writes binary machine code directly into memory.
A MemoryCodeSink
object should be used when emitting a Cranelift IR function into executable
memory. It writes machine code directly to a raw pointer without any bounds checking, so make
sure to allocate enough memory for the whole function. The number of bytes required is returned
by the Context::compile()
function.
Any relocations in the function are forwarded to the RelocSink
trait object.
Note that MemoryCodeSink
writes multi-byte values in the native byte order of the host. This
is not the right thing to do for cross compilation.
Fields
info: CodeInfo
Information about the generated code and read-only data.
Methods
impl<'a> MemoryCodeSink<'a>
[src]
pub unsafe fn new(
data: *mut u8,
relocs: &'a mut dyn RelocSink,
traps: &'a mut dyn TrapSink
) -> Self
[src]
data: *mut u8,
relocs: &'a mut dyn RelocSink,
traps: &'a mut dyn TrapSink
) -> Self
Create a new memory code sink that writes a function to the memory pointed to by data
.
This function is unsafe since MemoryCodeSink
does not perform bounds checking on the
memory buffer, and it can't guarantee that the data
pointer is valid.
Trait Implementations
impl<'a> CodeSink for MemoryCodeSink<'a>
[src]
fn offset(&self) -> CodeOffset
[src]
fn put1(&mut self, x: u8)
[src]
fn put2(&mut self, x: u16)
[src]
fn put4(&mut self, x: u32)
[src]
fn put8(&mut self, x: u64)
[src]
fn reloc_ebb(&mut self, rel: Reloc, ebb_offset: CodeOffset)
[src]
fn reloc_external(&mut self, rel: Reloc, name: &ExternalName, addend: Addend)
[src]
fn reloc_jt(&mut self, rel: Reloc, jt: JumpTable)
[src]
fn trap(&mut self, code: TrapCode, srcloc: SourceLoc)
[src]
fn begin_jumptables(&mut self)
[src]
fn begin_rodata(&mut self)
[src]
fn end_codegen(&mut self)
[src]
Auto Trait Implementations
impl<'a> !Send for MemoryCodeSink<'a>
impl<'a> !Sync for MemoryCodeSink<'a>
impl<'a> Unpin for MemoryCodeSink<'a>
impl<'a> !RefUnwindSafe for MemoryCodeSink<'a>
impl<'a> !UnwindSafe for MemoryCodeSink<'a>
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,