This commit allows building YJIT and ZJIT simultaneously, a "combo
build". Previously, `./configure --enable-yjit --enable-zjit` failed. At
runtime, though, only one of the two can be enabled at a time.
Add a root Cargo workspace that contains both the yjit and zjit crate.
The common Rust build integration mechanisms are factored out into
defs/jit.mk.
Combo YJIT+ZJIT dev builds are supported; if either JIT uses
`--enable-*=dev`, both of them are built in dev mode.
The combo build requires Cargo, but building one JIT at a time with only
rustc in release build remains supported.
* Add a make target to run all ZJIT tests
* Remove an unused variable
* Write up a document about testing
* Explain zjit-test-all first
* Clarify what's zjit-test-all
* Profile instructions for fixnum arithmetic
* Drop PartialEq from Type
* Do not push PatchPoint onto the stack
* Avoid pushing the output of the guards
* Pop operands after guards
* Test HIR from profiled runs
* Implement Display for new instructions
* Drop unused FIXNUM_BITS
* Use a Rust function to split lines
* Use Display for GuardType operands
Co-authored-by: Max Bernstein <max@bernsteinbear.com>
* Fix tests with Display-ed values
---------
Co-authored-by: Max Bernstein <max@bernsteinbear.com>