One critical bit of plumbing was missing: the `StackMapSink` passed to `compile_and_emit` was not actually receiving stackmaps. This seemingly very basic issue was not caught because the other major user of reftype support, SpiderMonkey, extracts stackmaps with a lower-level API. The SM integration was built this way to avoid an awkward API quirk when passing stackmaps through a `CodeSink` that proxies them to a `StackMapSink`: the `CodeSink` wants `Value`s for each reference slot, while the actual `StackMapSink` does not require these. This PR tweaks the plumbing in a slightly different way to make `wasmtime` GC tests, and presumably other consumers of stack-map info from the top-level Cranelift interface, happy.
This crate contains the core Cranelift code generator. It translates code from an intermediate representation into executable machine code.