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 {
|
||||
/// The address of the global storage.
|
||||
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,
|
||||
/// The global declaration, used for compatibilty checking.
|
||||
pub global: Global,
|
||||
|
||||
@@ -159,6 +159,10 @@ mod test_vmmemory_import {
|
||||
|
||||
/// The fields compiled code needs to access to utilize a WebAssembly global
|
||||
/// 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)]
|
||||
#[repr(C)]
|
||||
pub struct VMGlobalImport {
|
||||
@@ -744,8 +748,6 @@ mod test_vminterrupts {
|
||||
/// 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
|
||||
/// allocated at runtime.
|
||||
///
|
||||
/// TODO: We could move the globals into the `vmctx` allocation too.
|
||||
#[derive(Debug)]
|
||||
#[repr(C, align(16))] // align 16 since globals are aligned to that and contained inside
|
||||
pub struct VMContext {
|
||||
|
||||
Reference in New Issue
Block a user