Disconnects Store state fields from Compiler (#1761)
* Moves CodeMemory, VMInterrupts and SignatureRegistry from Compiler * CompiledModule holds CodeMemory and GdbJitImageRegistration * Store keeps track of its JIT code * Makes "jit_int.rs" stuff Send+Sync * Adds the threads example.
This commit is contained in:
@@ -48,22 +48,25 @@ fn main() {
|
||||
let tests: &[(&str, fn())] = &[
|
||||
("normal segfault", || segfault()),
|
||||
("make instance then segfault", || {
|
||||
let store = Store::default();
|
||||
let module = Module::new(&store, "(module)").unwrap();
|
||||
let _instance = Instance::new(&module, &[]).unwrap();
|
||||
let engine = Engine::default();
|
||||
let store = Store::new(&engine);
|
||||
let module = Module::new(&engine, "(module)").unwrap();
|
||||
let _instance = Instance::new(&store, &module, &[]).unwrap();
|
||||
segfault();
|
||||
}),
|
||||
("make instance then overrun the stack", || {
|
||||
let store = Store::default();
|
||||
let module = Module::new(&store, "(module)").unwrap();
|
||||
let _instance = Instance::new(&module, &[]).unwrap();
|
||||
let engine = Engine::default();
|
||||
let store = Store::new(&engine);
|
||||
let module = Module::new(&engine, "(module)").unwrap();
|
||||
let _instance = Instance::new(&store, &module, &[]).unwrap();
|
||||
println!("stack overrun: {}", overrun_the_stack());
|
||||
}),
|
||||
("segfault in a host function", || {
|
||||
let store = Store::default();
|
||||
let module = Module::new(&store, r#"(import "" "" (func)) (start 0)"#).unwrap();
|
||||
let engine = Engine::default();
|
||||
let store = Store::new(&engine);
|
||||
let module = Module::new(&engine, r#"(import "" "" (func)) (start 0)"#).unwrap();
|
||||
let segfault = Func::wrap(&store, || segfault());
|
||||
Instance::new(&module, &[segfault.into()]).unwrap();
|
||||
Instance::new(&store, &module, &[segfault.into()]).unwrap();
|
||||
}),
|
||||
];
|
||||
match env::var(VAR_NAME) {
|
||||
|
||||
Reference in New Issue
Block a user