Move module translation from cranelift to wasmtime (#3196)
The main purpose for doing this is that this is a large piece of functionality used by Wasmtime which is entirely independent of Cranelift. Eventually Wasmtime wants to be able to compile without Cranelift, but it can't also depend on `cranelift-wasm` in that situation for module translation which means that something needs to happen. One option is to refactor what's in `cranelift-wasm` into a separate crate (since all these pieces don't actually depend on `cranelift-codegen`), but I personally chose to not do this because: * The `ModuleEnvironment` trait, AFAIK, only has a primary user of Wasmtime. The Spidermonkey integration, for example, does not use this. * This is an extra layer of abstraction between Wasmtime and the compilation phase which was a bit of a pain to maintain. It couldn't be Wasmtime-specific as it was part of Cranelift but at the same time it had lots of Wasmtime-centric functionality (such as module linking). * Updating the "dummy" implementation has become pretty onerous over time as frequent additions are made and the "dummy" implementation was never actually used anywhere. This ended up feeling like effectively busy-work to update this. For these reasons I've opted to to move the meat of `cranelift-wasm` used by `wasmtime-environ` directly into `wasmtime-environ`. This means that the only real meat that Wasmtime uses from `cranelift-wasm` is the function-translation bits in the `wasmtime-cranelift` crate. The changes in `wasmtime-environ` are largely to inline module parsing together so it's a bit easier to follow instead of trying to connect the dots between lots of various function calls.
This commit is contained in: