full diff1: 55367b3...22d944c Description This PR replaces the current implementation of MJIT with a new JIT called "RJIT" 2. RJIT uses a pure-Ruby assembler to generate native code MJIT requires a C compiler at runtime. YJIT requires a Rust compiler at build time. RJIT doesn't require them. This means that RJIT's warmup could be slower than YJIT, but it's still much faster than MJIT's. The code g