Add comments about vmctx pointers in various datastructures. (#2925)
This forward-ports the relevant parts of #1396.
This commit is contained in:
@@ -89,7 +89,8 @@ impl From<ExportMemory> for Export {
|
|||||||
pub struct ExportGlobal {
|
pub struct ExportGlobal {
|
||||||
/// The address of the global storage.
|
/// The address of the global storage.
|
||||||
pub definition: *mut VMGlobalDefinition,
|
pub definition: *mut VMGlobalDefinition,
|
||||||
/// Pointer to the containing `VMContext`.
|
/// Pointer to a `VMContext` which has a lifetime at least as long as the
|
||||||
|
/// global. This may not be the `VMContext` which defines the global.
|
||||||
pub vmctx: *mut VMContext,
|
pub vmctx: *mut VMContext,
|
||||||
/// The global declaration, used for compatibilty checking.
|
/// The global declaration, used for compatibilty checking.
|
||||||
pub global: Global,
|
pub global: Global,
|
||||||
|
|||||||
@@ -159,6 +159,10 @@ mod test_vmmemory_import {
|
|||||||
|
|
||||||
/// The fields compiled code needs to access to utilize a WebAssembly global
|
/// The fields compiled code needs to access to utilize a WebAssembly global
|
||||||
/// variable imported from another instance.
|
/// variable imported from another instance.
|
||||||
|
///
|
||||||
|
/// Note that unlike with functions, tables, and memories, `VMGlobalImport`
|
||||||
|
/// doesn't include a `vmctx` pointer. Globals are never resized, and don't
|
||||||
|
/// require a `vmctx` pointer to access.
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone)]
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct VMGlobalImport {
|
pub struct VMGlobalImport {
|
||||||
@@ -744,8 +748,6 @@ mod test_vminterrupts {
|
|||||||
/// The struct here is empty, as the sizes of these fields are dynamic, and
|
/// The struct here is empty, as the sizes of these fields are dynamic, and
|
||||||
/// we can't describe them in Rust's type system. Sufficient memory is
|
/// we can't describe them in Rust's type system. Sufficient memory is
|
||||||
/// allocated at runtime.
|
/// allocated at runtime.
|
||||||
///
|
|
||||||
/// TODO: We could move the globals into the `vmctx` allocation too.
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
#[repr(C, align(16))] // align 16 since globals are aligned to that and contained inside
|
#[repr(C, align(16))] // align 16 since globals are aligned to that and contained inside
|
||||||
pub struct VMContext {
|
pub struct VMContext {
|
||||||
|
|||||||
Reference in New Issue
Block a user