chore(c-api) Code clean up.

This commit is contained in:
Ivan Enderlin
2020-11-12 17:02:37 +01:00
parent 69c23fd78f
commit d3c496f8a0
2 changed files with 23 additions and 12 deletions

View File

@@ -10,11 +10,12 @@ pub struct wasm_store_t {
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn wasm_store_new( pub unsafe extern "C" fn wasm_store_new(
wasm_engine_ptr: Option<NonNull<wasm_engine_t>>, engine: Option<NonNull<wasm_engine_t>>,
) -> Option<Box<wasm_store_t>> { ) -> Option<Box<wasm_store_t>> {
let wasm_engine_ptr = wasm_engine_ptr?; let engine = engine?;
let wasm_engine = wasm_engine_ptr.as_ref(); let engine = engine.as_ref();
let store = Store::new(&*wasm_engine.inner);
let store = Store::new(&*engine.inner);
Some(Box::new(wasm_store_t { inner: store })) Some(Box::new(wasm_store_t { inner: store }))
} }

View File

@@ -1,5 +1,6 @@
use super::store::wasm_store_t; use super::store::wasm_store_t;
use super::types::{wasm_byte_vec_t, wasm_frame_t, wasm_frame_vec_t, wasm_message_t}; use super::types::{wasm_byte_vec_t, wasm_frame_t, wasm_frame_vec_t, wasm_message_t};
use std::str;
use wasmer::RuntimeError; use wasmer::RuntimeError;
// opaque type which is a `RuntimeError` // opaque type which is a `RuntimeError`
@@ -19,8 +20,8 @@ pub unsafe extern "C" fn wasm_trap_new(
_store: &mut wasm_store_t, _store: &mut wasm_store_t,
message: &wasm_message_t, message: &wasm_message_t,
) -> Option<Box<wasm_trap_t>> { ) -> Option<Box<wasm_trap_t>> {
let message_bytes: &[u8] = message.into_slice()?; let message_bytes = message.into_slice()?;
let message_str = c_try!(std::str::from_utf8(message_bytes)); let message_str = c_try!(str::from_utf8(message_bytes));
let runtime_error = RuntimeError::new(message_str); let runtime_error = RuntimeError::new(message_str);
let trap = runtime_error.into(); let trap = runtime_error.into();
@@ -31,11 +32,16 @@ pub unsafe extern "C" fn wasm_trap_new(
pub unsafe extern "C" fn wasm_trap_delete(_trap: Option<Box<wasm_trap_t>>) {} pub unsafe extern "C" fn wasm_trap_delete(_trap: Option<Box<wasm_trap_t>>) {}
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn wasm_trap_message(trap: &wasm_trap_t, out_ptr: &mut wasm_byte_vec_t) { pub unsafe extern "C" fn wasm_trap_message(
trap: &wasm_trap_t,
// own
out: &mut wasm_byte_vec_t,
) {
let message = trap.inner.message(); let message = trap.inner.message();
let byte_vec: wasm_byte_vec_t = message.into_bytes().into(); let byte_vec: wasm_byte_vec_t = message.into_bytes().into();
out_ptr.size = byte_vec.size;
out_ptr.data = byte_vec.data; out.size = byte_vec.size;
out.data = byte_vec.data;
} }
#[no_mangle] #[no_mangle]
@@ -44,10 +50,14 @@ pub unsafe extern "C" fn wasm_trap_origin(trap: &wasm_trap_t) -> Option<Box<wasm
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn wasm_trap_trace(trap: &wasm_trap_t, out_ptr: &mut wasm_frame_vec_t) { pub unsafe extern "C" fn wasm_trap_trace(
trap: &wasm_trap_t,
// own
out: &mut wasm_frame_vec_t,
) {
let frames = trap.inner.trace(); let frames = trap.inner.trace();
let frame_vec: wasm_frame_vec_t = frames.into(); let frame_vec: wasm_frame_vec_t = frames.into();
out_ptr.size = frame_vec.size; out.size = frame_vec.size;
out_ptr.data = frame_vec.data; out.data = frame_vec.data;
} }