perf(l1): ship JUMPDEST bitmaps in the execution witness - #7274
diegokingston wants to merge 1 commit into
Conversation
|
🤖 Kimi Code ReviewI'll review this PR which adds precomputed JUMPDEST bitmaps to execution witnesses to avoid in-circuit bytecode scanning. Let me analyze the changes carefully. Overall AssessmentThe PR introduces a parallel Critical Issues1. Missing
|
🤖 Codex Code ReviewFindings
Notes The rest of the change looks mechanically consistent: host-side witness generation populates the new field, and the RPC/SSZ conversion paths that rebuild witnesses still recompute jumpdest bitmaps rather than trusting wire data. I could not run Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Lines of code reportTotal lines added: Detailed view |
… Code via from_parts_unchecked, no in-circuit bytecode scan (−1.88M cycles)
da60317 to
9a371e6
Compare
Benchmark Block Execution Results Comparison Against Main
|
Stacked on #7273 (witness DFS stream) — review only the last commit.
The witness now carries, in parallel with
codes, each bytecode's JUMPDEST bitmap (one bit per byte, exactlyCode::jumpdests). Guests build eachCodewithCode::from_parts_unchecked(hash, code, bitmap)instead of re-scanning the whole bytecode corpus in-circuit to compute jump destinations.Measurement
Guest cycles for mainnet block 25368371 (LambdaVM interpreter, same host):
main(89e1602)compute_jumpdestsgoes from 1.64M cycles (6.3% self) to 0 in the guest. Keccak/ECSM call counts unchanged; the real-block test (native + VM) passes.Notes
ExecutionWitnesschanges (new field) → fixtures must be regenerated (producers updated:into_execution_witness,from_ssz, blockchain witness generation).