Meta-tracing seems like a powerful middle ground between hand-written compiler infrastructure and a fully general optimizing JIT. How does the retrofit handle invalidation when a generated trace crosses opaque calls or encounters a mutating object layout? I’m curious whether the implementation leans on explicit guards and side exits, or punts those regions back to an interpreter—and how that tradeoff affects warm-up time and code-cache pressure.