Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions cranelift/jit/examples/jit-minimal.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use cranelift::prelude::*;
use cranelift_codegen::binemit::NullTrapSink;
use cranelift_codegen::binemit::{NullStackMapSink, NullTrapSink};
use cranelift_codegen::settings::{self, Configurable};
use cranelift_jit::{JITBuilder, JITModule};
use cranelift_module::{default_libcall_names, Linkage, Module};
Expand Down Expand Up @@ -49,8 +49,9 @@ fn main() {
bcx.finalize();
}
let mut trap_sink = NullTrapSink {};
let mut stack_map_sink = NullStackMapSink {};
module
.define_function(func_a, &mut ctx, &mut trap_sink)
.define_function(func_a, &mut ctx, &mut trap_sink, &mut stack_map_sink)
.unwrap();
module.clear_context(&mut ctx);

Expand All @@ -74,7 +75,7 @@ fn main() {
bcx.finalize();
}
module
.define_function(func_b, &mut ctx, &mut trap_sink)
.define_function(func_b, &mut ctx, &mut trap_sink, &mut stack_map_sink)
.unwrap();
module.clear_context(&mut ctx);

Expand Down
14 changes: 3 additions & 11 deletions cranelift/jit/src/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use cranelift_codegen::isa::TargetIsa;
use cranelift_codegen::settings::Configurable;
use cranelift_codegen::{self, ir, settings};
use cranelift_codegen::{
binemit::{self, Addend, CodeInfo, CodeOffset, Reloc, RelocSink, TrapSink},
binemit::{Addend, CodeInfo, CodeOffset, Reloc, RelocSink, StackMapSink, TrapSink},
CodegenError,
};
use cranelift_entity::SecondaryMap;
Expand Down Expand Up @@ -601,6 +601,7 @@ impl Module for JITModule {
id: FuncId,
ctx: &mut cranelift_codegen::Context,
trap_sink: &mut dyn TrapSink,
stack_map_sink: &mut dyn StackMapSink,
) -> ModuleResult<ModuleCompiledFunction> {
info!("defining function {}: {}", id, ctx.func.display(self.isa()));
let CodeInfo {
Expand All @@ -625,16 +626,7 @@ impl Module for JITModule {
.expect("TODO: handle OOM etc.");

let mut reloc_sink = JITRelocSink::default();
let mut stack_map_sink = binemit::NullStackMapSink {};
unsafe {
ctx.emit_to_memory(
&*self.isa,
ptr,
&mut reloc_sink,
trap_sink,
&mut stack_map_sink,
)
};
unsafe { ctx.emit_to_memory(&*self.isa, ptr, &mut reloc_sink, trap_sink, stack_map_sink) };

self.record_function_for_perf(ptr, size, &decl.name);
self.compiled_functions[id] = Some(CompiledBlob {
Expand Down
8 changes: 5 additions & 3 deletions cranelift/jit/tests/basic.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use cranelift_codegen::binemit::NullTrapSink;
use cranelift_codegen::binemit::{NullStackMapSink, NullTrapSink};
use cranelift_codegen::ir::*;
use cranelift_codegen::isa::CallConv;
use cranelift_codegen::settings::{self, Configurable};
Expand Down Expand Up @@ -57,8 +57,9 @@ fn define_simple_function(module: &mut JITModule) -> FuncId {
}

let mut trap_sink = NullTrapSink {};
let mut stack_map_sink = NullStackMapSink {};
module
.define_function(func_id, &mut ctx, &mut trap_sink)
.define_function(func_id, &mut ctx, &mut trap_sink, &mut stack_map_sink)
.unwrap();

func_id
Expand Down Expand Up @@ -205,8 +206,9 @@ fn libcall_function() {
}

let mut trap_sink = NullTrapSink {};
let mut stack_map_sink = NullStackMapSink {};
module
.define_function(func_id, &mut ctx, &mut trap_sink)
.define_function(func_id, &mut ctx, &mut trap_sink, &mut stack_map_sink)
.unwrap();

module.finalize_definitions();
Expand Down
4 changes: 3 additions & 1 deletion cranelift/module/src/module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,7 @@ pub trait Module {
func: FuncId,
ctx: &mut Context,
trap_sink: &mut dyn binemit::TrapSink,
stack_map_sink: &mut dyn binemit::StackMapSink,
) -> ModuleResult<ModuleCompiledFunction>;

/// Define a function, taking the function body from the given `bytes`.
Expand Down Expand Up @@ -562,8 +563,9 @@ impl<M: Module> Module for &mut M {
func: FuncId,
ctx: &mut Context,
trap_sink: &mut dyn binemit::TrapSink,
stack_map_sink: &mut dyn binemit::StackMapSink,
) -> ModuleResult<ModuleCompiledFunction> {
(**self).define_function(func, ctx, trap_sink)
(**self).define_function(func, ctx, trap_sink, stack_map_sink)
}

fn define_function_bytes(
Expand Down
6 changes: 3 additions & 3 deletions cranelift/object/src/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use cranelift_codegen::entity::SecondaryMap;
use cranelift_codegen::isa::TargetIsa;
use cranelift_codegen::{self, ir};
use cranelift_codegen::{
binemit::{Addend, CodeInfo, CodeOffset, NullStackMapSink, Reloc, RelocSink, TrapSink},
binemit::{Addend, CodeInfo, CodeOffset, Reloc, RelocSink, StackMapSink, TrapSink},
CodegenError,
};
use cranelift_module::{
Expand Down Expand Up @@ -248,6 +248,7 @@ impl Module for ObjectModule {
func_id: FuncId,
ctx: &mut cranelift_codegen::Context,
trap_sink: &mut dyn TrapSink,
stack_map_sink: &mut dyn StackMapSink,
) -> ModuleResult<ModuleCompiledFunction> {
info!(
"defining function {}: {}",
Expand All @@ -260,15 +261,14 @@ impl Module for ObjectModule {
} = ctx.compile(self.isa())?;
let mut code: Vec<u8> = vec![0; code_size as usize];
let mut reloc_sink = ObjectRelocSink::default();
let mut stack_map_sink = NullStackMapSink {};

unsafe {
ctx.emit_to_memory(
&*self.isa,
code.as_mut_ptr(),
&mut reloc_sink,
trap_sink,
&mut stack_map_sink,
stack_map_sink,
)
};

Expand Down
11 changes: 8 additions & 3 deletions cranelift/object/tests/basic.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use cranelift_codegen::ir::*;
use cranelift_codegen::isa::CallConv;
use cranelift_codegen::{binemit::NullTrapSink, settings};
use cranelift_codegen::{
binemit::{NullStackMapSink, NullTrapSink},
settings,
};
use cranelift_codegen::{ir::types::I16, Context};
use cranelift_entity::EntityRef;
use cranelift_frontend::*;
Expand Down Expand Up @@ -51,8 +54,9 @@ fn define_simple_function(module: &mut ObjectModule) -> FuncId {
}

let mut trap_sink = NullTrapSink {};
let mut stack_map_sink = NullStackMapSink {};
module
.define_function(func_id, &mut ctx, &mut trap_sink)
.define_function(func_id, &mut ctx, &mut trap_sink, &mut stack_map_sink)
.unwrap();

func_id
Expand Down Expand Up @@ -191,8 +195,9 @@ fn libcall_function() {
}

let mut trap_sink = NullTrapSink {};
let mut stack_map_sink = NullStackMapSink {};
module
.define_function(func_id, &mut ctx, &mut trap_sink)
.define_function(func_id, &mut ctx, &mut trap_sink, &mut stack_map_sink)
.unwrap();

module.finish();
Expand Down