Chris Fallin
Chris Fallin
I suppose we could add a(nother) special case to the block-placement logic, where LICM etc is implemented: if the original block is cold, keep the op in the same block....
@IamTheCarl thanks for starting this conversation -- it's a really interesting one! I'm curious what sort of state-saves are actually necessary. As @bjorn3 says, very general snapshotting at arbitrary points...
> I think you may have some, @cfallin. Indeed! This is the bit about "no intermediate pointers in registers or the stack" alluded to above. To add a bit more...
@IamTheCarl it spawned an interesting discussion and one that's timely for other potential uses too, so thank you for starting it! > non-async Wasm module and transform it Yes, this...
Indeed, Wizer came up in the above discussion as well; the main difference in my mind (at least as far as I can remember now) was whether this would be...
Not much has changed regarding the fundamentals here since the last comments; Wizer is still the state-of-the-art, and unfortunately we don't have anything built into Wasmtime itself for snapshotting.
This could possibly result in a performance degradation in the compiler: it removes the caching of the `MachineEnv`, which contains lists of registers (heap-allocated `Vec`s), and recreates it for each...
Ah, one other option could be to put it in the `MachBackend` instead -- if it's the case that it no longer depends on the `call_conv`. If it does on...
Indeed, this would best be structured as a separate framework that consumes Cranelift's IR, I think. There are lots of resources you could look at for the various parts; the...
That scheme is a good start, and works for tree-shaped code, but not DAG-shaped code: as soon as an operator (SSA value) is used more than once, you either need...