mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-12 05:18:43 +00:00
chore(c-api) Use Option<&T> rather than Option<NonNull<T>>.
This commit is contained in:
25
lib/c-api/src/wasm_c_api/externals/mod.rs
vendored
25
lib/c-api/src/wasm_c_api/externals/mod.rs
vendored
@@ -6,7 +6,6 @@ mod table;
|
|||||||
pub use function::*;
|
pub use function::*;
|
||||||
pub use global::*;
|
pub use global::*;
|
||||||
pub use memory::*;
|
pub use memory::*;
|
||||||
use std::ptr::NonNull;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
pub use table::*;
|
pub use table::*;
|
||||||
use wasmer::{Extern, Instance};
|
use wasmer::{Extern, Instance};
|
||||||
@@ -22,10 +21,9 @@ wasm_declare_boxed_vec!(extern);
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_func_as_extern(
|
pub unsafe extern "C" fn wasm_func_as_extern(
|
||||||
func: Option<NonNull<wasm_func_t>>,
|
func: Option<&wasm_func_t>,
|
||||||
) -> Option<Box<wasm_extern_t>> {
|
) -> Option<Box<wasm_extern_t>> {
|
||||||
let func = func?;
|
let func = func?;
|
||||||
let func = func.as_ref();
|
|
||||||
|
|
||||||
Some(Box::new(wasm_extern_t {
|
Some(Box::new(wasm_extern_t {
|
||||||
instance: func.instance.clone(),
|
instance: func.instance.clone(),
|
||||||
@@ -35,10 +33,9 @@ pub unsafe extern "C" fn wasm_func_as_extern(
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_global_as_extern(
|
pub unsafe extern "C" fn wasm_global_as_extern(
|
||||||
global: Option<NonNull<wasm_global_t>>,
|
global: Option<&wasm_global_t>,
|
||||||
) -> Option<Box<wasm_extern_t>> {
|
) -> Option<Box<wasm_extern_t>> {
|
||||||
let global = global?;
|
let global = global?;
|
||||||
let global = global.as_ref();
|
|
||||||
|
|
||||||
Some(Box::new(wasm_extern_t {
|
Some(Box::new(wasm_extern_t {
|
||||||
// TODO: update this if global does hold onto an `instance`
|
// TODO: update this if global does hold onto an `instance`
|
||||||
@@ -49,10 +46,9 @@ pub unsafe extern "C" fn wasm_global_as_extern(
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_memory_as_extern(
|
pub unsafe extern "C" fn wasm_memory_as_extern(
|
||||||
memory: Option<NonNull<wasm_memory_t>>,
|
memory: Option<&wasm_memory_t>,
|
||||||
) -> Option<Box<wasm_extern_t>> {
|
) -> Option<Box<wasm_extern_t>> {
|
||||||
let memory = memory?;
|
let memory = memory?;
|
||||||
let memory = memory.as_ref();
|
|
||||||
|
|
||||||
Some(Box::new(wasm_extern_t {
|
Some(Box::new(wasm_extern_t {
|
||||||
// TODO: update this if global does hold onto an `instance`
|
// TODO: update this if global does hold onto an `instance`
|
||||||
@@ -63,10 +59,9 @@ pub unsafe extern "C" fn wasm_memory_as_extern(
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_table_as_extern(
|
pub unsafe extern "C" fn wasm_table_as_extern(
|
||||||
table: Option<NonNull<wasm_table_t>>,
|
table: Option<&wasm_table_t>,
|
||||||
) -> Option<Box<wasm_extern_t>> {
|
) -> Option<Box<wasm_extern_t>> {
|
||||||
let table = table?;
|
let table = table?;
|
||||||
let table = table.as_ref();
|
|
||||||
|
|
||||||
Some(Box::new(wasm_extern_t {
|
Some(Box::new(wasm_extern_t {
|
||||||
// TODO: update this if global does hold onto an `instance`
|
// TODO: update this if global does hold onto an `instance`
|
||||||
@@ -77,10 +72,9 @@ pub unsafe extern "C" fn wasm_table_as_extern(
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_extern_as_func(
|
pub unsafe extern "C" fn wasm_extern_as_func(
|
||||||
r#extern: Option<NonNull<wasm_extern_t>>,
|
r#extern: Option<&wasm_extern_t>,
|
||||||
) -> Option<Box<wasm_func_t>> {
|
) -> Option<Box<wasm_func_t>> {
|
||||||
let r#extern = r#extern?;
|
let r#extern = r#extern?;
|
||||||
let r#extern = r#extern.as_ref();
|
|
||||||
|
|
||||||
if let Extern::Function(f) = &r#extern.inner {
|
if let Extern::Function(f) = &r#extern.inner {
|
||||||
Some(Box::new(wasm_func_t {
|
Some(Box::new(wasm_func_t {
|
||||||
@@ -94,10 +88,9 @@ pub unsafe extern "C" fn wasm_extern_as_func(
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_extern_as_global(
|
pub unsafe extern "C" fn wasm_extern_as_global(
|
||||||
r#extern: Option<NonNull<wasm_extern_t>>,
|
r#extern: Option<&wasm_extern_t>,
|
||||||
) -> Option<Box<wasm_global_t>> {
|
) -> Option<Box<wasm_global_t>> {
|
||||||
let r#extern = r#extern?;
|
let r#extern = r#extern?;
|
||||||
let r#extern = r#extern.as_ref();
|
|
||||||
|
|
||||||
if let Extern::Global(g) = &r#extern.inner {
|
if let Extern::Global(g) = &r#extern.inner {
|
||||||
Some(Box::new(wasm_global_t { inner: g.clone() }))
|
Some(Box::new(wasm_global_t { inner: g.clone() }))
|
||||||
@@ -108,10 +101,9 @@ pub unsafe extern "C" fn wasm_extern_as_global(
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_extern_as_memory(
|
pub unsafe extern "C" fn wasm_extern_as_memory(
|
||||||
r#extern: Option<NonNull<wasm_extern_t>>,
|
r#extern: Option<&wasm_extern_t>,
|
||||||
) -> Option<Box<wasm_memory_t>> {
|
) -> Option<Box<wasm_memory_t>> {
|
||||||
let r#extern = r#extern?;
|
let r#extern = r#extern?;
|
||||||
let r#extern = r#extern.as_ref();
|
|
||||||
|
|
||||||
if let Extern::Memory(m) = &r#extern.inner {
|
if let Extern::Memory(m) = &r#extern.inner {
|
||||||
Some(Box::new(wasm_memory_t { inner: m.clone() }))
|
Some(Box::new(wasm_memory_t { inner: m.clone() }))
|
||||||
@@ -122,10 +114,9 @@ pub unsafe extern "C" fn wasm_extern_as_memory(
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_extern_as_table(
|
pub unsafe extern "C" fn wasm_extern_as_table(
|
||||||
r#extern: Option<NonNull<wasm_extern_t>>,
|
r#extern: Option<&wasm_extern_t>,
|
||||||
) -> Option<Box<wasm_table_t>> {
|
) -> Option<Box<wasm_table_t>> {
|
||||||
let r#extern = r#extern?;
|
let r#extern = r#extern?;
|
||||||
let r#extern = r#extern.as_ref();
|
|
||||||
|
|
||||||
if let Extern::Table(t) = &r#extern.inner {
|
if let Extern::Table(t) = &r#extern.inner {
|
||||||
Some(Box::new(wasm_table_t { inner: t.clone() }))
|
Some(Box::new(wasm_table_t { inner: t.clone() }))
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ use super::types::{
|
|||||||
wasm_importtype_vec_t,
|
wasm_importtype_vec_t,
|
||||||
};
|
};
|
||||||
use crate::error::update_last_error;
|
use crate::error::update_last_error;
|
||||||
use std::ptr::NonNull;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use wasmer::Module;
|
use wasmer::Module;
|
||||||
|
|
||||||
@@ -138,7 +137,7 @@ pub unsafe extern "C" fn wasm_module_imports(
|
|||||||
pub unsafe extern "C" fn wasm_module_deserialize(
|
pub unsafe extern "C" fn wasm_module_deserialize(
|
||||||
store: &wasm_store_t,
|
store: &wasm_store_t,
|
||||||
bytes: *const wasm_byte_vec_t,
|
bytes: *const wasm_byte_vec_t,
|
||||||
) -> Option<NonNull<wasm_module_t>> {
|
) -> Option<*const wasm_module_t> {
|
||||||
// TODO: read config from store and use that to decide which compiler to use
|
// TODO: read config from store and use that to decide which compiler to use
|
||||||
|
|
||||||
let byte_slice = if bytes.is_null() || (&*bytes).into_slice().is_none() {
|
let byte_slice = if bytes.is_null() || (&*bytes).into_slice().is_none() {
|
||||||
@@ -150,11 +149,9 @@ pub unsafe extern "C" fn wasm_module_deserialize(
|
|||||||
|
|
||||||
let module = c_try!(Module::deserialize(&store.inner, byte_slice));
|
let module = c_try!(Module::deserialize(&store.inner, byte_slice));
|
||||||
|
|
||||||
Some(NonNull::new_unchecked(Box::into_raw(Box::new(
|
Some(Box::into_raw(Box::new(wasm_module_t {
|
||||||
wasm_module_t {
|
inner: Arc::new(module),
|
||||||
inner: Arc::new(module),
|
})) as *const _)
|
||||||
},
|
|
||||||
))))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
use super::engine::wasm_engine_t;
|
use super::engine::wasm_engine_t;
|
||||||
use std::ptr::NonNull;
|
|
||||||
use wasmer::Store;
|
use wasmer::Store;
|
||||||
|
|
||||||
/// Opaque wrapper around `Store`
|
/// Opaque wrapper around `Store`
|
||||||
@@ -10,11 +9,9 @@ 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(
|
||||||
engine: Option<NonNull<wasm_engine_t>>,
|
engine: Option<&wasm_engine_t>,
|
||||||
) -> Option<Box<wasm_store_t>> {
|
) -> Option<Box<wasm_store_t>> {
|
||||||
let engine = engine?;
|
let engine = engine?;
|
||||||
let engine = engine.as_ref();
|
|
||||||
|
|
||||||
let store = Store::new(&*engine.inner);
|
let store = Store::new(&*engine.inner);
|
||||||
|
|
||||||
Some(Box::new(wasm_store_t { inner: store }))
|
Some(Box::new(wasm_store_t { inner: store }))
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
use super::{wasm_externtype_t, wasm_valtype_t, wasm_valtype_vec_t, WasmExternType};
|
use super::{wasm_externtype_t, wasm_valtype_t, wasm_valtype_vec_t, WasmExternType};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr::NonNull;
|
|
||||||
use wasmer::{ExternType, FunctionType, ValType};
|
use wasmer::{ExternType, FunctionType, ValType};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
@@ -124,12 +123,12 @@ pub unsafe extern "C" fn wasm_functype_delete(_function_type: Option<Box<wasm_fu
|
|||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_functype_copy(
|
pub unsafe extern "C" fn wasm_functype_copy(
|
||||||
function_type: Option<NonNull<wasm_functype_t>>,
|
function_type: Option<&wasm_functype_t>,
|
||||||
) -> Option<Box<wasm_functype_t>> {
|
) -> Option<Box<wasm_functype_t>> {
|
||||||
let function_type = function_type?;
|
let function_type = function_type?;
|
||||||
|
|
||||||
Some(Box::new(wasm_functype_t::new(
|
Some(Box::new(wasm_functype_t::new(
|
||||||
function_type.as_ref().inner().function_type.clone(),
|
function_type.inner().function_type.clone(),
|
||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
use super::types::{wasm_ref_t, wasm_valkind_enum};
|
use super::types::{wasm_ref_t, wasm_valkind_enum};
|
||||||
use crate::error::{update_last_error, CApiError};
|
use crate::error::{update_last_error, CApiError};
|
||||||
use std::convert::{TryFrom, TryInto};
|
use std::convert::{TryFrom, TryInto};
|
||||||
use std::ptr::NonNull;
|
|
||||||
use wasmer::Val;
|
use wasmer::Val;
|
||||||
|
|
||||||
#[allow(non_camel_case_types)]
|
#[allow(non_camel_case_types)]
|
||||||
@@ -69,10 +68,10 @@ pub unsafe extern "C" fn wasm_val_copy(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn wasm_val_delete(val: Option<NonNull<wasm_val_t>>) {
|
pub unsafe extern "C" fn wasm_val_delete(val: Option<&wasm_val_t>) {
|
||||||
if let Some(v_inner) = val {
|
if let Some(v_inner) = val {
|
||||||
// TODO: figure out where wasm_val is allocated first...
|
// TODO: figure out where wasm_val is allocated first...
|
||||||
let _ = Box::from_raw(v_inner.as_ptr());
|
let _ = Box::from_raw(v_inner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user