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, offset: isize,
relocs: &'a mut dyn RelocSink, relocs: &'a mut dyn RelocSink,
traps: &'a mut dyn TrapSink, traps: &'a mut dyn TrapSink,
/// Information about the generated code and read-only data.
pub info: CodeInfo,
} }
impl<'a> MemoryCodeSink<'a> { impl<'a> MemoryCodeSink<'a> {
@@ -55,11 +53,17 @@ impl<'a> MemoryCodeSink<'a> {
Self { Self {
data, data,
offset: 0, offset: 0,
info: CodeInfo { total_size: 0 },
relocs, relocs,
traps, 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. /// 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); 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) { fn add_call_site(&mut self, opcode: Opcode, loc: SourceLoc) {
debug_assert!( debug_assert!(
opcode.is_call(), opcode.is_call(),

View File

@@ -114,9 +114,6 @@ pub trait CodeSink {
/// Add trap information for the current offset. /// Add trap information for the current offset.
fn trap(&mut self, _: TrapCode, _: SourceLoc); 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. /// Add a call site for a call with the given opcode, returning at the current offset.
fn add_call_site(&mut self, _: Opcode, _: SourceLoc) { fn add_call_site(&mut self, _: Opcode, _: SourceLoc) {
// Default implementation doesn't need to do anything. // Default implementation doesn't need to do anything.

View File

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

View File

@@ -1470,8 +1470,6 @@ impl MachBufferFinalized {
} }
sink.put1(*byte); sink.put1(*byte);
} }
sink.end_codegen();
} }
/// Get the stack map metadata for this code. /// Get the stack map metadata for this code.
@@ -2088,7 +2086,6 @@ mod test {
fn trap(&mut self, t: TrapCode, _: SourceLoc) { fn trap(&mut self, t: TrapCode, _: SourceLoc) {
self.traps.push((self.offset, t)); self.traps.push((self.offset, t));
} }
fn end_codegen(&mut self) {}
fn add_call_site(&mut self, op: Opcode, _: SourceLoc) { fn add_call_site(&mut self, op: Opcode, _: SourceLoc) {
self.callsites.push((self.offset, op)); 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 trap(&mut self, _code: ir::TrapCode, _srcloc: ir::SourceLoc) {}
fn end_codegen(&mut self) {}
} }
fn check_precise_output(text: &str, context: &Context) -> Result<()> { fn check_precise_output(text: &str, context: &Context) -> Result<()> {