Add a VMComponentContext type and create it on instantiation (#4215)
* Add a `VMComponentContext` type and create it on instantiation This commit fills out the `wasmtime-runtime` crate's support for `VMComponentContext` and creates it as part of the instantiation process. This moves a few maps that were temporarily allocated in an `InstanceData` into the `VMComponentContext` and additionally reads the canonical options data from there instead. This type still won't be used in its "full glory" until the lowering of host functions is completely implemented, however, which will be coming in a future commit. * Remove `DerefMut` implementation * Rebase conflicts
This commit is contained in:
@@ -154,11 +154,21 @@ pub enum Initializer {
|
||||
/// previously created module instance, and stored into the
|
||||
/// `VMComponentContext` at the `index` specified. This lowering is then
|
||||
/// used in the future by pointers from `CanonicalOptions`.
|
||||
ExtractMemory(CoreExport<MemoryIndex>),
|
||||
ExtractMemory {
|
||||
/// The index of the memory being defined.
|
||||
index: RuntimeMemoryIndex,
|
||||
/// Where this memory is being extracted from.
|
||||
export: CoreExport<MemoryIndex>,
|
||||
},
|
||||
|
||||
/// Same as `ExtractMemory`, except it's extracting a function pointer to be
|
||||
/// used as a `realloc` function.
|
||||
ExtractRealloc(CoreDef),
|
||||
ExtractRealloc {
|
||||
/// The index of the realloc being defined.
|
||||
index: RuntimeReallocIndex,
|
||||
/// Where this realloc is being extracted from.
|
||||
def: CoreDef,
|
||||
},
|
||||
|
||||
/// The `module` specified is saved into the runtime state at the next
|
||||
/// `RuntimeModuleIndex`, referred to later by `Export` definitions.
|
||||
|
||||
@@ -1027,7 +1027,7 @@ impl<'a, 'data> Translator<'a, 'data> {
|
||||
self.result
|
||||
.component
|
||||
.initializers
|
||||
.push(Initializer::ExtractMemory(export));
|
||||
.push(Initializer::ExtractMemory { index, export });
|
||||
index
|
||||
}
|
||||
|
||||
@@ -1041,7 +1041,7 @@ impl<'a, 'data> Translator<'a, 'data> {
|
||||
self.result
|
||||
.component
|
||||
.initializers
|
||||
.push(Initializer::ExtractRealloc(def));
|
||||
.push(Initializer::ExtractRealloc { index, def });
|
||||
index
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user