Merge branch 'master' into feature/host-env-prototype

This commit is contained in:
Mark McCaskey
2020-11-20 15:54:35 -08:00
66 changed files with 956 additions and 829 deletions

View File

@@ -116,42 +116,41 @@ pub unsafe extern "C" fn wasm_func_new_with_env(
}
}
let inner_callback =
move |env: &mut WrapperEnv, args: &[Val]| -> Result<Vec<Val>, RuntimeError> {
let processed_args: wasm_val_vec_t = args
.into_iter()
.map(TryInto::try_into)
.collect::<Result<Vec<wasm_val_t>, _>>()
.expect("Argument conversion failed")
.into();
let mut results: wasm_val_vec_t = vec![
wasm_val_t {
kind: wasm_valkind_enum::WASM_I64 as _,
of: wasm_val_inner { int64_t: 0 },
};
num_rets
]
let inner_callback = move |env: &WrapperEnv, args: &[Val]| -> Result<Vec<Val>, RuntimeError> {
let processed_args: wasm_val_vec_t = args
.into_iter()
.map(TryInto::try_into)
.collect::<Result<Vec<wasm_val_t>, _>>()
.expect("Argument conversion failed")
.into();
let trap = callback(env.env, &processed_args, &mut results);
let mut results: wasm_val_vec_t = vec![
wasm_val_t {
kind: wasm_valkind_enum::WASM_I64 as _,
of: wasm_val_inner { int64_t: 0 },
};
num_rets
]
.into();
if !trap.is_null() {
let trap: Box<wasm_trap_t> = Box::from_raw(trap);
let trap = callback(env.env, &processed_args, &mut results);
return Err(trap.inner);
}
if !trap.is_null() {
let trap: Box<wasm_trap_t> = Box::from_raw(trap);
let processed_results = results
.into_slice()
.expect("Failed to convert `results` into a slice")
.into_iter()
.map(TryInto::try_into)
.collect::<Result<Vec<Val>, _>>()
.expect("Result conversion failed");
return Err(trap.inner);
}
Ok(processed_results)
};
let processed_results = results
.into_slice()
.expect("Failed to convert `results` into a slice")
.into_iter()
.map(TryInto::try_into)
.collect::<Result<Vec<Val>, _>>()
.expect("Result conversion failed");
Ok(processed_results)
};
let function = Function::new_with_env(
&store.inner,