[][src]Trait cranelift_codegen::binemit::CodeSink

pub trait CodeSink {
    fn offset(&self) -> CodeOffset;
fn put1(&mut self, _: u8);
fn put2(&mut self, _: u16);
fn put4(&mut self, _: u32);
fn put8(&mut self, _: u64);
fn reloc_block(&mut self, _: Reloc, _: CodeOffset);
fn reloc_external(&mut self, _: Reloc, _: &ExternalName, _: Addend);
fn reloc_constant(&mut self, _: Reloc, _: ConstantOffset);
fn reloc_jt(&mut self, _: Reloc, _: JumpTable);
fn trap(&mut self, _: TrapCode, _: SourceLoc);
fn begin_jumptables(&mut self);
fn begin_rodata(&mut self);
fn end_codegen(&mut self);
fn add_stackmap(&mut self, _: &[Value], _: &Function, _: &dyn TargetIsa); }

Abstract interface for adding bytes to the code segment.

A CodeSink will receive all of the machine code for a function. It also accepts relocations which are locations in the code section that need to be fixed up when linking.

Required methods

fn offset(&self) -> CodeOffset

Get the current position.

fn put1(&mut self, _: u8)

Add 1 byte to the code section.

fn put2(&mut self, _: u16)

Add 2 bytes to the code section.

fn put4(&mut self, _: u32)

Add 4 bytes to the code section.

fn put8(&mut self, _: u64)

Add 8 bytes to the code section.

fn reloc_block(&mut self, _: Reloc, _: CodeOffset)

Add a relocation referencing an block at the current offset.

fn reloc_external(&mut self, _: Reloc, _: &ExternalName, _: Addend)

Add a relocation referencing an external symbol plus the addend at the current offset.

fn reloc_constant(&mut self, _: Reloc, _: ConstantOffset)

Add a relocation referencing a constant.

fn reloc_jt(&mut self, _: Reloc, _: JumpTable)

Add a relocation referencing a jump table.

fn trap(&mut self, _: TrapCode, _: SourceLoc)

Add trap information for the current offset.

fn begin_jumptables(&mut self)

Machine code output is complete, jump table data may follow.

fn begin_rodata(&mut self)

Jump table output is complete, raw read-only data may follow.

fn end_codegen(&mut self)

Read-only data output is complete, we're done.

fn add_stackmap(&mut self, _: &[Value], _: &Function, _: &dyn TargetIsa)

Add a stackmap at the current code offset.

Loading content...

Implementors

impl<'a> CodeSink for MemoryCodeSink<'a>[src]

Loading content...