* numeric: emit two decimal digits per iteration in rb_fix2str Replace the digit-at-a-time loop in rb_fix2str with the standard itoa 2-digit lookup table for base 10. Each iteration now writes two digits using a single (u % 100, u / 10...khasinski (Chris Hasiński)
Add FloatAdd, FloatSub, FloatMul, FloatDiv HIR instructions that lower to gen_prepare_leaf_call_with_gc followed by a direct ccall to rb_float_plus/minus/mul/div. This skips CCallWithFrame overhead (frame push/pop, stack and locals spill...khasinski (Chris Hasiński)
Add FloatToInt HIR instruction that truncates a Flonum to Integer via rb_jit_flo_to_i with GC preparation. The helper uses trunc() for truncation toward zero, then returns Fixnum (LONG2FIX) or Bignum (rb_dbl2big) depending on magnitude. ...khasinski (Chris Hasiński)
Address review feedback: 1. Move the helper from jit.c (shared YJIT/ZJIT glue) to zjit.c since it is only used by ZJIT. 2. Instead of duplicating the truncation logic, export flo_to_i from numeric.c and call it from the ZJIT helper...khasinski (Chris Hasiński)
The previous commit exposed flo_to_i as a non-static global, which tripped tool/leaked-globals because it lacks the rb_ prefix. Keep flo_to_i static and add a new public wrapper rb_flo_to_i in numeric.c that delegates to it. ZJIT now ca...khasinski (Chris Hasiński)
The zjit-bindgen CI check regenerates cruby_bindings.inc.rs from headers and diffs against the committed file. Since rb_flo_to_i is declared next to rb_float_plus/minus/mul/div in internal/numeric.h, bindgen emits it there. Match that or...khasinski (Chris Hasiński)
* ZJIT: Fix getlocal with level=0 reading stale EP data YARVINSN_getlocal always loaded from EP memory, even for level=0 locals. But setlocal_WC_0 only updates the JIT's FrameState without writing to EP. When the Ruby compiler emits get...khasinski (Chris Hasiński)
Adds method annotations so ZJIT can emit the fast CCall path for pure Float cfunc predicates and propagate return types for numeric builtin predicates. Float cfuncs (leaf, no_gc, elidable): nan?, finite? BoolExact infinite? ...khasinski (Chris Hasiński)