Formatted emscripten files

This commit is contained in:
Syrus
2019-07-06 17:46:48 -07:00
parent 15d1fd4bbb
commit d3d84cbc22
4 changed files with 36 additions and 15 deletions

View File

@ -22,11 +22,23 @@ use wasmer_runtime_core::{
}; };
pub fn call_malloc(ctx: &mut Ctx, size: u32) -> u32 { pub fn call_malloc(ctx: &mut Ctx, size: u32) -> u32 {
get_emscripten_data(ctx).malloc.as_ref().unwrap().call(size).unwrap() get_emscripten_data(ctx)
.malloc
.as_ref()
.unwrap()
.call(size)
.unwrap()
} }
pub fn call_malloc_with_cast<T: Copy, Ty>(ctx: &mut Ctx, size: u32) -> WasmPtr<T, Ty> { pub fn call_malloc_with_cast<T: Copy, Ty>(ctx: &mut Ctx, size: u32) -> WasmPtr<T, Ty> {
WasmPtr::new(get_emscripten_data(ctx).malloc.as_ref().unwrap().call(size).unwrap()) WasmPtr::new(
get_emscripten_data(ctx)
.malloc
.as_ref()
.unwrap()
.call(size)
.unwrap(),
)
} }
pub fn call_memalign(ctx: &mut Ctx, alignment: u32, size: u32) -> u32 { pub fn call_memalign(ctx: &mut Ctx, alignment: u32, size: u32) -> u32 {

View File

@ -167,7 +167,10 @@ impl<'a> EmscriptenData<'a> {
) -> EmscriptenData<'a> { ) -> EmscriptenData<'a> {
let malloc = instance.func("_malloc").or(instance.func("malloc")).ok(); let malloc = instance.func("_malloc").or(instance.func("malloc")).ok();
let free = instance.func("_free").or(instance.func("free")).ok(); let free = instance.func("_free").or(instance.func("free")).ok();
let memalign = instance.func("_memalign").or(instance.func("memalign")).ok(); let memalign = instance
.func("_memalign")
.or(instance.func("memalign"))
.ok();
let memset = instance.func("_memset").or(instance.func("memset")).ok(); let memset = instance.func("_memset").or(instance.func("memset")).ok();
let stack_alloc = instance.func("stackAlloc").ok(); let stack_alloc = instance.func("stackAlloc").ok();
@ -228,7 +231,10 @@ impl<'a> EmscriptenData<'a> {
let stack_save = instance.func("stackSave").ok(); let stack_save = instance.func("stackSave").ok();
let stack_restore = instance.func("stackRestore").ok(); let stack_restore = instance.func("stackRestore").ok();
let set_threw = instance.func("_setThrew").or(instance.func("setThrew")).ok(); let set_threw = instance
.func("_setThrew")
.or(instance.func("setThrew"))
.ok();
EmscriptenData { EmscriptenData {
malloc, malloc,
@ -334,15 +340,11 @@ pub fn run_emscripten_instance(
instance.call(&ep, &[Value::I32(arg as i32)])?; instance.call(&ep, &[Value::I32(arg as i32)])?;
} else { } else {
let (func_name, main_func) = match instance.dyn_func("_main") { let (func_name, main_func) = match instance.dyn_func("_main") {
Ok(func) => { Ok(func) => Ok(("_main", func)),
Ok(("_main", func)) Err(_e) => match instance.dyn_func("main") {
},
Err(_e) => {
match instance.dyn_func("main") {
Ok(func) => Ok(("main", func)), Ok(func) => Ok(("main", func)),
Err(e) => Err(e) Err(e) => Err(e),
} },
}
}?; }?;
let num_params = main_func.signature().params().len(); let num_params = main_func.signature().params().len();
let _result = match num_params { let _result = match num_params {
@ -350,7 +352,10 @@ pub fn run_emscripten_instance(
let mut new_args = vec![path]; let mut new_args = vec![path];
new_args.extend(args); new_args.extend(args);
let (argc, argv) = store_module_arguments(instance.context_mut(), new_args); let (argc, argv) = store_module_arguments(instance.context_mut(), new_args);
instance.call(func_name, &[Value::I32(argc as i32), Value::I32(argv as i32)])?; instance.call(
func_name,
&[Value::I32(argc as i32), Value::I32(argv as i32)],
)?;
} }
0 => { 0 => {
instance.call(func_name, &[])?; instance.call(func_name, &[])?;

View File

@ -13,7 +13,9 @@ pub fn _pthread_attr_getstack(
) -> i32 { ) -> i32 {
trace!( trace!(
"emscripten::_pthread_attr_getstack({}, {}, {})", "emscripten::_pthread_attr_getstack({}, {}, {})",
_stackaddr, _stacksize, _other _stackaddr,
_stacksize,
_other
); );
// TODO: Translate from Emscripten // TODO: Translate from Emscripten
// HEAP32[stackaddr >> 2] = STACK_BASE; // HEAP32[stackaddr >> 2] = STACK_BASE;

View File

@ -24,7 +24,9 @@ pub fn is_emscripten_module(module: &Module) -> bool {
.namespace_table .namespace_table
.get(import_name.namespace_index); .get(import_name.namespace_index);
let field = module.info().name_table.get(import_name.name_index); let field = module.info().name_table.get(import_name.name_index);
if (field == "_emscripten_memcpy_big" || field=="emscripten_memcpy_big") && namespace == "env" { if (field == "_emscripten_memcpy_big" || field == "emscripten_memcpy_big")
&& namespace == "env"
{
return true; return true;
} }
} }