mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-19 20:01:20 +00:00
Make memalign optional if the wasm doesn't export it
This commit is contained in:
@ -143,10 +143,11 @@ pub fn call_malloc(size: u32, ctx: &mut Ctx) -> u32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn call_memalign(alignment: u32, size: u32, ctx: &mut Ctx) -> u32 {
|
pub fn call_memalign(alignment: u32, size: u32, ctx: &mut Ctx) -> u32 {
|
||||||
get_emscripten_data(ctx)
|
if let Some(memalign) = &get_emscripten_data(ctx).memalign {
|
||||||
.memalign
|
memalign.call(alignment, size).unwrap()
|
||||||
.call(alignment, size)
|
} else {
|
||||||
.unwrap()
|
panic!("Memalign is set to None");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn call_memset(pointer: u32, value: u32, size: u32, ctx: &mut Ctx) -> u32 {
|
pub fn call_memset(pointer: u32, value: u32, size: u32, ctx: &mut Ctx) -> u32 {
|
||||||
|
@ -91,7 +91,7 @@ fn dynamictop_ptr(static_bump: u32) -> u32 {
|
|||||||
pub struct EmscriptenData<'a> {
|
pub struct EmscriptenData<'a> {
|
||||||
pub malloc: Func<'a, u32, u32>,
|
pub malloc: Func<'a, u32, u32>,
|
||||||
pub free: Func<'a, u32>,
|
pub free: Func<'a, u32>,
|
||||||
pub memalign: Func<'a, (u32, u32), u32>,
|
pub memalign: Option<Func<'a, (u32, u32), u32>>,
|
||||||
pub memset: Func<'a, (u32, u32, u32), u32>,
|
pub memset: Func<'a, (u32, u32, u32), u32>,
|
||||||
pub stack_alloc: Func<'a, u32, u32>,
|
pub stack_alloc: Func<'a, u32, u32>,
|
||||||
|
|
||||||
@ -102,7 +102,11 @@ impl<'a> EmscriptenData<'a> {
|
|||||||
pub fn new(instance: &'a mut Instance) -> EmscriptenData<'a> {
|
pub fn new(instance: &'a mut Instance) -> EmscriptenData<'a> {
|
||||||
let malloc = instance.func("_malloc").unwrap();
|
let malloc = instance.func("_malloc").unwrap();
|
||||||
let free = instance.func("_free").unwrap();
|
let free = instance.func("_free").unwrap();
|
||||||
let memalign = instance.func("_memalign").unwrap();
|
let memalign = if let Ok(func) = instance.func("_memalign") {
|
||||||
|
Some(func)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
let memset = instance.func("_memset").unwrap();
|
let memset = instance.func("_memset").unwrap();
|
||||||
let stack_alloc = instance.func("stackAlloc").unwrap();
|
let stack_alloc = instance.func("stackAlloc").unwrap();
|
||||||
|
|
||||||
@ -511,7 +515,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject
|
|||||||
"NaN" => Global::new(Value::F64(f64::NAN)),
|
"NaN" => Global::new(Value::F64(f64::NAN)),
|
||||||
"Infinity" => Global::new(Value::F64(f64::INFINITY)),
|
"Infinity" => Global::new(Value::F64(f64::INFINITY)),
|
||||||
},
|
},
|
||||||
"math" => {
|
"global.Math" => {
|
||||||
"pow" => func!(crate::math::pow),
|
"pow" => func!(crate::math::pow),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user