ZJIT removes redundant object loads and stores
2 days ago
- #JIT
- #Optimization
- #Ruby
- ZJIT introduces a new optimization pass called load-store optimization to improve performance by removing redundant object loads and stores.
- The optimization is part of ZJIT's High-level Intermediate Representation (HIR) and leverages SSA representation and instruction effect system.
- Load-store optimization significantly improves performance, making ZJIT over twice as fast as YJIT for repeated instance variable assignments.
- The optimization handles various edge cases, including redundant stores, redundant loads, and scenarios with aliasing and effectful operations.
- The algorithm uses a lightweight abstract interpretation over objects to ensure soundness while minimizing computation.
- Future work includes dead store elimination and type-based alias analysis to further enhance performance.