Skip to main content

compile_straightline_pinned

Function compile_straightline_pinned 

Source
pub fn compile_straightline_pinned(
    ops: &[MicroOp],
    pins: &[u16],
) -> Result<CompiledChain, JitCompileError>
Expand description

REGISTER-THREADING compilation (EXODIA 3.1): up to four frame slots are PINNED into the threaded registers r0..r3 for the whole chain. Pinned operands ride registers through the generated location-variant stencils; ops outside the variant families (Div, arrays, calls, …) spill the pinned operands they read and reload the pinned slots they write, so every memory-form piece still sees a coherent frame.

Frame-coherence contract: a pinned slot’s FRAME cell is stale between its spills — callers must only use pinning where nothing outside the chain reads the frame mid-run (mode-A functions: replay re-enters from the boundary arguments and the result returns by register).