Remove end_codegen method from CodeSink
This commit is contained in:
@@ -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(),
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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()`.
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<()> {
|
||||||
|
|||||||
Reference in New Issue
Block a user