mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-13 22:08:45 +00:00
Merge branch 'master' into fix-c-api-module-serialize
This commit is contained in:
@@ -1,9 +1,42 @@
|
||||
//! Wasmer-specific extensions to the Wasm C API.
|
||||
|
||||
use crate::wasm_c_api::instance::wasm_instance_t;
|
||||
use super::instance::wasm_instance_t;
|
||||
use super::module::wasm_module_t;
|
||||
use super::types::wasm_name_t;
|
||||
use std::ffi::c_void;
|
||||
use std::str;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn wasm_instance_get_vmctx_ptr(instance: &wasm_instance_t) -> *mut c_void {
|
||||
instance.inner.vmctx_ptr() as _
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn wasm_module_name(module: &wasm_module_t, out: &mut wasm_name_t) {
|
||||
let name = match module.inner.name() {
|
||||
Some(name) => name,
|
||||
None => return,
|
||||
};
|
||||
|
||||
*out = name.as_bytes().to_vec().into();
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn wasm_module_set_name(
|
||||
module: &mut wasm_module_t,
|
||||
name: &wasm_name_t,
|
||||
) -> bool {
|
||||
let name = match name.into_slice() {
|
||||
Some(name) => match str::from_utf8(name) {
|
||||
Ok(name) => name,
|
||||
Err(_) => return false, // not ideal!
|
||||
},
|
||||
None => return false,
|
||||
};
|
||||
|
||||
match Arc::get_mut(&mut module.inner) {
|
||||
Some(module) => module.set_name(name),
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user