Fix SimpleJIT tests
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
use cranelift::prelude::*;
|
use cranelift::prelude::*;
|
||||||
use cranelift_codegen::binemit::NullTrapSink;
|
use cranelift_codegen::binemit::NullTrapSink;
|
||||||
use cranelift_module::{default_libcall_names, Linkage, Module};
|
use cranelift_module::{default_libcall_names, Linkage, Module};
|
||||||
use cranelift_simplejit::{SimpleJITBackend, SimpleJITBuilder};
|
use cranelift_simplejit::{SimpleJITBuilder, SimpleJITModule};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut module: Module<SimpleJITBackend> =
|
let mut module: SimpleJITModule =
|
||||||
Module::new(SimpleJITBuilder::new(default_libcall_names()));
|
SimpleJITModule::new(SimpleJITBuilder::new(default_libcall_names()));
|
||||||
let mut ctx = module.make_context();
|
let mut ctx = module.make_context();
|
||||||
let mut func_ctx = FunctionBuilderContext::new();
|
let mut func_ctx = FunctionBuilderContext::new();
|
||||||
|
|
||||||
@@ -70,10 +70,10 @@ fn main() {
|
|||||||
module.clear_context(&mut ctx);
|
module.clear_context(&mut ctx);
|
||||||
|
|
||||||
// Perform linking.
|
// Perform linking.
|
||||||
module.finalize_definitions();
|
let product = module.finish();
|
||||||
|
|
||||||
// Get a raw pointer to the generated code.
|
// Get a raw pointer to the generated code.
|
||||||
let code_b = module.get_finalized_function(func_b);
|
let code_b = product.lookup_func(func_b);
|
||||||
|
|
||||||
// Cast it to a rust function pointer type.
|
// Cast it to a rust function pointer type.
|
||||||
let ptr_b = unsafe { mem::transmute::<_, fn() -> u32>(code_b) };
|
let ptr_b = unsafe { mem::transmute::<_, fn() -> u32>(code_b) };
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ use cranelift_simplejit::*;
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn error_on_incompatible_sig_in_declare_function() {
|
fn error_on_incompatible_sig_in_declare_function() {
|
||||||
let mut module: Module<SimpleJITBackend> =
|
let mut module: SimpleJITModule =
|
||||||
Module::new(SimpleJITBuilder::new(default_libcall_names()));
|
SimpleJITModule::new(SimpleJITBuilder::new(default_libcall_names()));
|
||||||
let mut sig = Signature {
|
let mut sig = Signature {
|
||||||
params: vec![AbiParam::new(types::I64)],
|
params: vec![AbiParam::new(types::I64)],
|
||||||
returns: vec![],
|
returns: vec![],
|
||||||
@@ -26,7 +26,7 @@ fn error_on_incompatible_sig_in_declare_function() {
|
|||||||
.unwrap(); // Make sure this is an error
|
.unwrap(); // Make sure this is an error
|
||||||
}
|
}
|
||||||
|
|
||||||
fn define_simple_function(module: &mut Module<SimpleJITBackend>) -> FuncId {
|
fn define_simple_function(module: &mut SimpleJITModule) -> FuncId {
|
||||||
let sig = Signature {
|
let sig = Signature {
|
||||||
params: vec![],
|
params: vec![],
|
||||||
returns: vec![],
|
returns: vec![],
|
||||||
@@ -55,27 +55,13 @@ fn define_simple_function(module: &mut Module<SimpleJITBackend>) -> FuncId {
|
|||||||
func_id
|
func_id
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn double_finalize() {
|
|
||||||
let mut module: Module<SimpleJITBackend> =
|
|
||||||
Module::new(SimpleJITBuilder::new(default_libcall_names()));
|
|
||||||
|
|
||||||
define_simple_function(&mut module);
|
|
||||||
module.finalize_definitions();
|
|
||||||
|
|
||||||
// Calling `finalize_definitions` a second time without any new definitions
|
|
||||||
// should have no effect.
|
|
||||||
module.finalize_definitions();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "Result::unwrap()` on an `Err` value: DuplicateDefinition(\"abc\")")]
|
#[should_panic(expected = "Result::unwrap()` on an `Err` value: DuplicateDefinition(\"abc\")")]
|
||||||
fn panic_on_define_after_finalize() {
|
fn panic_on_define_after_finalize() {
|
||||||
let mut module: Module<SimpleJITBackend> =
|
let mut module: SimpleJITModule =
|
||||||
Module::new(SimpleJITBuilder::new(default_libcall_names()));
|
SimpleJITModule::new(SimpleJITBuilder::new(default_libcall_names()));
|
||||||
|
|
||||||
define_simple_function(&mut module);
|
define_simple_function(&mut module);
|
||||||
module.finalize_definitions();
|
|
||||||
define_simple_function(&mut module);
|
define_simple_function(&mut module);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,8 +140,8 @@ fn switch_error() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn libcall_function() {
|
fn libcall_function() {
|
||||||
let mut module: Module<SimpleJITBackend> =
|
let mut module: SimpleJITModule =
|
||||||
Module::new(SimpleJITBuilder::new(default_libcall_names()));
|
SimpleJITModule::new(SimpleJITBuilder::new(default_libcall_names()));
|
||||||
|
|
||||||
let sig = Signature {
|
let sig = Signature {
|
||||||
params: vec![],
|
params: vec![],
|
||||||
@@ -200,5 +186,5 @@ fn libcall_function() {
|
|||||||
.define_function(func_id, &mut ctx, &mut trap_sink)
|
.define_function(func_id, &mut ctx, &mut trap_sink)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
module.finalize_definitions();
|
module.finish();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user