Remove end_codegen method from CodeSink

This commit is contained in:
bjorn3
2022-01-11 14:51:27 +01:00
parent 354c4f7bf8
commit 37598ad170
5 changed files with 8 additions and 15 deletions

View File

@@ -36,8 +36,6 @@ pub struct MemoryCodeSink<'a> {
offset: isize,
relocs: &'a mut dyn RelocSink,
traps: &'a mut dyn TrapSink,
/// Information about the generated code and read-only data.
pub info: CodeInfo,
}
impl<'a> MemoryCodeSink<'a> {
@@ -55,11 +53,17 @@ impl<'a> MemoryCodeSink<'a> {
Self {
data,
offset: 0,
info: CodeInfo { total_size: 0 },
relocs,
traps,
}
}
/// Information about the generated code and read-only data.
pub fn info(&self) -> CodeInfo {
CodeInfo {
total_size: self.offset as CodeOffset,
}
}
}
/// A trait for receiving relocations for code that is emitted directly into memory.
@@ -119,10 +123,6 @@ impl<'a> CodeSink for MemoryCodeSink<'a> {
self.traps.trap(ofs, srcloc, code);
}
fn end_codegen(&mut self) {
self.info.total_size = self.offset as CodeOffset;
}
fn add_call_site(&mut self, opcode: Opcode, loc: SourceLoc) {
debug_assert!(
opcode.is_call(),

View File

@@ -114,9 +114,6 @@ pub trait CodeSink {
/// Add trap information for the current offset.
fn trap(&mut self, _: TrapCode, _: SourceLoc);
/// Read-only data output is complete, we're done.
fn end_codegen(&mut self);
/// Add a call site for a call with the given opcode, returning at the current offset.
fn add_call_site(&mut self, _: Opcode, _: SourceLoc) {
// Default implementation doesn't need to do anything.

View File

@@ -200,7 +200,7 @@ impl Context {
.as_ref()
.expect("only using mach backend now");
result.buffer.emit(&mut sink);
let info = sink.info;
let info = sink.info();
// New backends do not emit StackMaps through the `CodeSink` because its interface
// requires `Value`s; instead, the `StackMap` objects are directly accessible via
// `result.buffer.stack_maps()`.

View File

@@ -1470,8 +1470,6 @@ impl MachBufferFinalized {
}
sink.put1(*byte);
}
sink.end_codegen();
}
/// Get the stack map metadata for this code.
@@ -2088,7 +2086,6 @@ mod test {
fn trap(&mut self, t: TrapCode, _: SourceLoc) {
self.traps.push((self.offset, t));
}
fn end_codegen(&mut self) {}
fn add_call_site(&mut self, op: Opcode, _: SourceLoc) {
self.callsites.push((self.offset, op));
}

View File

@@ -94,7 +94,6 @@ impl binemit::CodeSink for SizeSink {
) {
}
fn trap(&mut self, _code: ir::TrapCode, _srcloc: ir::SourceLoc) {}
fn end_codegen(&mut self) {}
}
fn check_precise_output(text: &str, context: &Context) -> Result<()> {