Nick Fitzgerald
Nick Fitzgerald
We don't keep `VMFuncRef` pointers inside the GC heap, as the GC heap is untrusted, and instead have a side table, and store table IDs in GC objects. We currently...
Currently the `TypeRegistry::is_subtype` method requires taking a read lock to access the supertypes arrays that allow for O(1) subtype checking. At the time of writing, this doesn't power the `ref.{test,cast}`...
We have a bunch of knobs and associated optimizations and special cases for linear memory bounds checks. We should reuse all that for Wasm GC heaps, letting them be more...
We could implement an escape analysis for Wasm GC types to figure out which allocations do not escape their stack frame. Then we can do unboxing/SROA, replacing a struct's fields...
We can take advantage of Wasm GC's sound type system to determine which memory accesses are in logically separate regions, feed that into our alias analysis pass, and go to...
Hey folks! I've finally got all of Wasm GC implemented for Wasmtime and all spec tests passing.[^1] I also have a sizable backlog of potential optimizations to do. But, of...
This module should be gated behind a `check` cargo feature. It should provide a really simple property-based testing framework for combining `Arbitrary`-based generators with your oracles/property functions that can be...
This lays down the initial infrastructure for support for GC in our fused adapters for the component model. We keep track of whether each lifted/lowered function wants args/results as GC...
This is the old simple preopt stuff for some number divided/remaindered by a non-power-of-two constant: * https://github.com/bytecodealliance/wasmtime/blob/465913eb2c91998c99ae9222e47f8e9f9a88a546/cranelift/codegen/src/divconst_magic_numbers.rs#L41-L217 * https://github.com/bytecodealliance/wasmtime/blob/465913eb2c91998c99ae9222e47f8e9f9a88a546/cranelift/codegen/src/simple_preopt.rs#L206-L243 The ISLE + e-graphs mid-end work replaced `simple_preopt`, but never ported...
[Right now](https://github.com/bytecodealliance/wasmtime/blob/957677c6f50f57430abe06977dbb9c1b839b5b69/crates/environ/src/func_environ.rs#L1272-L1296), to check if for interrupts: * we load the interrupts pointer from the vmctx * we dereference it to get the maybe-interrupted value * we compare that against...