wasmtime_environ::component

Module dfg

Source
Expand description

A dataflow-graph-like intermediate representation of a component

This module contains ComponentDfg which is an intermediate step towards becoming a full-fledged Component. The main purpose for the existence of this representation of a component is to track dataflow between various items within a component and support edits to them after the initial inlined translation of a component.

Currently fused adapters are represented with a core WebAssembly module which gets “injected” into the final component as-if the component already bundled it. In doing so the adapter modules need to be partitioned and inserted into the final sequence of modules to instantiate. While this is possible to do with a flat GlobalInitializer list it gets unwieldy really quickly especially when other translation features are added.

This module is largely a duplicate of the component::info module in this crate. The hierarchy here uses *Id types instead of *Index types to represent that they don’t have any necessary implicit ordering. Additionally nothing is kept in an ordered list and instead this is worked with in a general dataflow fashion where dependencies are walked during processing.

The ComponentDfg::finish method will convert the dataflow graph to a linearized GlobalInitializer list which is intended to not be edited after it’s created.

The ComponentDfg is created as part of the component::inline phase of translation where the dataflow performed there allows identification of fused adapters, what arguments make their way to core wasm modules, etc.

Structs§

AdapterId
AdapterModuleId
CanonicalOptions
Same as info::CanonicalOptions
ComponentDfg
High-level representation of a component as a “data-flow graph”.
CoreExport
Same as info::CoreExport
InstanceId
Intern
A helper structure to “intern” and deduplicate values of type V with an identifying key K.
MemoryId
PostReturnId
ReallocId
Resource
Same as info::Resource

Enums§

CoreDef
Same as info::CoreDef, except has an extra Adapter variant.
Export
Same as info::Export
Instance
Same as info::InstantiateModule
SideEffect
Possible side effects that are possible with instantiating this component.
Trampoline
Same as info::Trampoline