JIT Engine – Orquestador de Compilación en Tiempo Real

Archivo: src/jit_engine.rs (935 líneas)

¿Por qué existe?

Actúa como orquestador entre la VM Fast y el compilador JIT nativo (jit.rs). Decide qué bloques de bytecode son candidatos a compilación JIT, especializa tipos estáticamente, y gestiona el fallback a la VM interpretada cuando el JIT no puede compilar.

API Pública

Detección de JIT-compilabilidad

FunciónDescripción
es_jiteable(opcodes) -> boolAnaliza una secuencia de opcodes y determina si es 100% compilable por NativeJIT

Especialización de tipos

FunciónDescripción
especializar_bytecode(bytecode) -> Vec<Opcode>Convierte opcodes genéricos (Add/Sub/Mul/Div) en versiones tipadas (AddInt/AddFloat) según inferencia estática. También detecta patrones como XorSign (sub de cero) y fusiona operaciones

Pipeline de decisión JIT

  1. Análisis de jiteabilidad: es_jiteable() revisa cada opcode del bloque.
  2. Especialización: Si es jiteable, se especializan los tipos de las operaciones aritméticas.
  3. Compilación: Se invoca NativeJIT::compile() para generar código máquina.
  4. Ejecución: Se ejecuta el código nativo generado.
  5. Fallback: Si falla la compilación, se ejecuta el bytecode original en la VM Fast.

Opcodes detectados como NO JITeables