doc(runtime-core) Write more documentation.

This commit is contained in:
Ivan Enderlin 2019-11-04 21:50:19 +01:00
parent 81326cee13
commit 0f82cd3c40

View File

@ -498,25 +498,33 @@ impl Ctx {
} }
} }
/// Used to provide type safety (ish) for passing around function pointers. /// Represents a function pointer. It is mostly used in the
/// `typed_func` module within the `wrap` functions, to wrap imported
/// functions.
#[repr(C)] #[repr(C)]
pub struct Func { pub struct Func {
_private: [u8; 0], _private: [u8; 0],
} }
/// Represents a function environment pointer, like a captured
/// environment of a closure. It is mostly used in the `typed_func`
/// module within the `wrap` functions, to wrap imported functions.
#[repr(C)] #[repr(C)]
pub struct FuncEnv { pub struct FuncEnv {
_private: [u8; 0], _private: [u8; 0],
} }
/// Represents a function context. It is used by imported function
/// only.
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct FuncCtx { pub(crate) struct FuncCtx {
pub(crate) vmctx: NonNull<Ctx>, pub(crate) vmctx: NonNull<Ctx>,
pub(crate) func_env: Option<NonNull<FuncEnv>>, pub(crate) func_env: Option<NonNull<FuncEnv>>,
} }
/// An imported function, which contains the vmctx that owns this function. /// An imported function is a function pointer associated to a
/// function context.
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
#[repr(C)] #[repr(C)]
pub struct ImportedFunc { pub struct ImportedFunc {
@ -524,7 +532,7 @@ pub struct ImportedFunc {
pub(crate) func_ctx: NonNull<FuncCtx>, pub(crate) func_ctx: NonNull<FuncCtx>,
} }
// manually implemented because ImportedFunc contains raw pointers // Manually implemented because ImportedFunc contains raw pointers
// directly; `Func` is marked Send (But `Ctx` actually isn't! (TODO: // directly; `Func` is marked Send (But `Ctx` actually isn't! (TODO:
// review this, shouldn't `Ctx` be Send?)) // review this, shouldn't `Ctx` be Send?))
unsafe impl Send for ImportedFunc {} unsafe impl Send for ImportedFunc {}