Skip to content

perf(evm): resolve jump targets once per bytecode cache build - #616

Closed
abmcar wants to merge 1 commit into
DTVMStack:mainfrom
abmcar:perf/evm-cache-single-jump-resolution
Closed

abmcar wants to merge 1 commit into
DTVMStack:mainfrom
abmcar:perf/evm-cache-single-jump-resolution

Conversation

@abmcar

@abmcar abmcar commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

  • N
  • Y

2. What is the scope of this PR (e.g. component or file name):

buildBytecodeCache in src/evm/evm_cache.cpp.

3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

  • Affects user behaviors
  • Contains CI/CD configuration changes
  • Contains documentation changes
  • Contains experimental features
  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Other

buildBytecodeCache calls resolveJumpTargetsByAbstractStack twice in a row with the same arguments: once inside the buildJumpDestMap profile region, and once right after it, clearing the first result in between. The function reads only the bytecode, the jump-destination map and the metrics table, and writes only Cache.ResolvedJumpTargets, so the second call rebuilds an identical map. The duplicate dates from #462, whose comment already says the pass runs once.

This PR deletes the second call (6 lines). Nothing else changes.

Measured on main at e839f6b, Release build, on 338 mainnet contracts (5.1 MB of runtime bytecode, 23 B to 24,575 B each):

buildBytecodeCache, total over the 338 contracts before after change
EnableSPP = false 135.3 ms 104.9 ms −22.5%
EnableSPP = true 147.0 ms 114.8 ms −21.9%

Each value is the median of 30 in-process repetitions (5 processes, 6 repetitions each after one warm-up) on one pinned core. The before and after ranges do not overlap: [131.8, 136.2] against [100.9, 105.3] ms with SPP off, and [144.5, 148.0] against [113.1, 115.3] ms with SPP on.

The draft #615 removes the same call as part of a larger restructuring of this function. This PR is that one deletion on its own; whichever of the two lands second needs a trivial conflict resolution at this spot.

No change document: the PR restores the run-once behaviour the code comment already describes and adds no capability.

4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

  • N
  • Y

5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

  • Unit test
  • Integration test
  • Benchmark (add benchmark stats below)
  • Manual test (add detailed scripts or steps below)
  • Other

No new test: the removed call has no observable effect other than time. Checked on this branch:

  • Equivalence: for each of the 338 contracts, with EnableSPP off and on, a hash over all six EVMBytecodeCache fields (JumpDestMap, PushValueMap, GasChunkEnd, GasChunkCost, GasChunkCostSPP, and ResolvedJumpTargets in sorted order) is the same on main and on this branch: 676 of 676 comparisons, covering 220,603 resolved jump targets per setting.
  • ctest in a Release multipass build with DTVM_TEST_REVISION=Cancun: 14/14 with default arguments, and 14/14 with SPEC_TESTS_ARGS set as in the CI multipass job. This includes evmCacheTests (16 cases), evmInterpTests (275), evmJitFrontendTests (182), evmDifferentialTests (79) and evmStateTests (1,805).
  • tools/run_evm_tests.py -r build/dtvm --format evm with -m multipass --enable-evm-gas and with -m interpreter: 0 failures.
  • clang-format 15.0.7 with --dry-run -Werror on the changed file, and git diff --check.

Benchmark and equivalence method: a temporary gtest case, not part of this PR, reads the 338 bytecode files, calls buildBytecodeCache on each, and prints the field hash and the total time per pass. The same case was built into main and into this branch.

6. Release note

Build the EVM bytecode cache faster by resolving jump targets once instead of twice.

🤖 Generated with Claude Code

buildBytecodeCache called resolveJumpTargetsByAbstractStack twice in a row
with the same arguments: once inside the buildJumpDestMap profile region and
once right after it, clearing the first result in between. The function reads
only the bytecode, the jump-destination map and the metrics table, and writes
only Cache.ResolvedJumpTargets, so the second call rebuilt an identical map.
The duplicate dates from DTVMStack#462, whose comment already says the pass runs once.

Drop the second call. On 338 mainnet contracts (5.1 MB of bytecode) all six
cache fields are identical before and after, with EnableSPP off and on, and
the total cache build time falls from 135.3 ms to 104.9 ms (-22.5%) with SPP
off and from 147.0 ms to 114.8 ms (-21.9%) with SPP on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 9, 2026 09:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown

⚡ Performance Regression Check Results

✅ Performance Check Passed (interpreter)

Performance Benchmark Results (threshold: 25%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 1.41 1.39 -1.1% PASS
total/main/blake2b_huff/empty 0.02 0.02 -8.3% PASS
total/main/blake2b_shifts/8415nulls 7.57 7.87 +3.9% PASS
total/main/sha1_divs/5311 4.85 4.96 +2.3% PASS
total/main/sha1_divs/empty 0.06 0.06 -3.3% PASS
total/main/sha1_shifts/5311 3.07 3.12 +1.5% PASS
total/main/sha1_shifts/empty 0.02 0.02 -3.2% PASS
total/main/snailtracer/benchmark 49.23 50.42 +2.5% PASS
total/main/structarray_alloc/nfts_rank 0.64 0.68 +5.2% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 -0.3% PASS
total/main/swap_math/received 0.00 0.00 +1.9% PASS
total/main/swap_math/spent 0.00 0.00 -1.8% PASS
total/main/weierstrudel/1 0.18 0.18 -0.3% PASS
total/main/weierstrudel/15 1.89 2.03 +7.0% PASS
total/micro/JUMPDEST_n0/empty 2.02 2.15 +6.7% PASS
total/micro/jump_around/empty 0.05 0.05 +1.4% PASS
total/micro/loop_with_many_jumpdests/empty 33.95 34.36 +1.3% PASS
total/micro/memory_grow_mload/by1 0.09 0.09 +1.0% PASS
total/micro/memory_grow_mload/by16 0.10 0.10 +0.4% PASS
total/micro/memory_grow_mload/by32 0.07 0.06 -6.4% PASS
total/micro/memory_grow_mload/nogrow 0.05 0.05 +1.0% PASS
total/micro/memory_grow_mstore/by1 0.10 0.10 -4.6% PASS
total/micro/memory_grow_mstore/by16 0.06 0.06 -4.6% PASS
total/micro/memory_grow_mstore/by32 0.13 0.13 +3.4% PASS
total/micro/memory_grow_mstore/nogrow 0.10 0.09 -4.8% PASS
total/micro/signextend/one 0.14 0.14 +1.5% PASS
total/micro/signextend/zero 0.24 0.25 +0.6% PASS
total/synth/ADD/b0 1.62 1.59 -1.6% PASS
total/synth/ADD/b1 1.56 1.58 +1.0% PASS
total/synth/ADDRESS/a0 3.58 3.60 +0.6% PASS
total/synth/ADDRESS/a1 3.09 3.14 +1.7% PASS
total/synth/AND/b0 1.24 1.28 +3.2% PASS
total/synth/AND/b1 1.32 1.34 +2.0% PASS
total/synth/BYTE/b0 3.94 3.96 +0.7% PASS
total/synth/BYTE/b1 4.45 4.70 +5.8% PASS
total/synth/CALLDATASIZE/a0 2.84 2.75 -3.1% PASS
total/synth/CALLDATASIZE/a1 1.93 1.89 -2.1% PASS
total/synth/CALLER/a0 3.48 3.66 +5.1% PASS
total/synth/CALLER/a1 3.72 7.14 +91.9% PASS
total/synth/CALLVALUE/a0 1.66 1.79 +7.9% PASS
total/synth/CALLVALUE/a1 2.87 3.08 +7.1% PASS
total/synth/CODESIZE/a0 3.25 3.38 +4.3% PASS
total/synth/CODESIZE/a1 3.35 3.54 +5.7% PASS
total/synth/DUP1/d0 0.85 0.92 +7.9% PASS
total/synth/DUP1/d1 1.02 0.95 -6.4% PASS
total/synth/DUP10/d0 0.84 0.91 +8.1% PASS
total/synth/DUP10/d1 0.96 0.89 -7.1% PASS
total/synth/DUP11/d0 0.54 0.54 +1.2% PASS
total/synth/DUP11/d1 0.93 0.90 -3.5% PASS
total/synth/DUP12/d0 0.83 0.91 +9.9% PASS
total/synth/DUP12/d1 0.54 0.56 +3.8% PASS
total/synth/DUP13/d0 0.84 0.89 +6.2% PASS
total/synth/DUP13/d1 0.97 0.90 -7.1% PASS
total/synth/DUP14/d0 0.50 0.56 +12.4% PASS
total/synth/DUP14/d1 0.93 0.91 -2.9% PASS
total/synth/DUP15/d0 0.89 0.91 +2.3% PASS
total/synth/DUP15/d1 0.56 0.56 -1.0% PASS
total/synth/DUP16/d0 0.86 0.92 +6.4% PASS
total/synth/DUP16/d1 0.94 0.92 -1.6% PASS
total/synth/DUP2/d0 0.54 0.56 +3.6% PASS
total/synth/DUP2/d1 0.89 0.93 +4.5% PASS
total/synth/DUP3/d0 0.92 0.91 -1.2% PASS
total/synth/DUP3/d1 0.56 0.57 +2.1% PASS
total/synth/DUP4/d0 0.85 0.91 +6.9% PASS
total/synth/DUP4/d1 0.96 0.89 -6.8% PASS
total/synth/DUP5/d0 0.55 0.54 -1.2% PASS
total/synth/DUP5/d1 0.88 0.92 +3.7% PASS
total/synth/DUP6/d0 0.82 0.90 +9.6% PASS
total/synth/DUP6/d1 0.57 0.57 -0.4% PASS
total/synth/DUP7/d0 0.84 0.89 +6.2% PASS
total/synth/DUP7/d1 0.90 0.90 -0.9% PASS
total/synth/DUP8/d0 0.53 0.55 +3.7% PASS
total/synth/DUP8/d1 0.92 0.90 -2.2% PASS
total/synth/DUP9/d0 0.89 0.91 +2.3% PASS
total/synth/DUP9/d1 0.54 0.56 +3.8% PASS
total/synth/EQ/b0 2.96 2.92 -1.6% PASS
total/synth/EQ/b1 3.02 2.95 -2.2% PASS
total/synth/GAS/a0 2.21 2.22 +0.6% PASS
total/synth/GAS/a1 3.39 3.74 +10.3% PASS
total/synth/GT/b0 3.09 3.08 -0.4% PASS
total/synth/GT/b1 2.95 3.02 +2.3% PASS
total/synth/ISZERO/u0 4.55 4.41 -3.2% PASS
total/synth/JUMPDEST/n0 2.07 2.11 +1.9% PASS
total/synth/LT/b0 3.31 3.23 -2.5% PASS
total/synth/LT/b1 2.39 2.43 +1.6% PASS
total/synth/MSIZE/a0 3.23 3.21 -0.6% PASS
total/synth/MSIZE/a1 3.51 3.57 +1.9% PASS
total/synth/MUL/b0 3.49 3.51 +0.5% PASS
total/synth/MUL/b1 3.20 3.30 +2.9% PASS
total/synth/NOT/u0 1.33 1.29 -2.8% PASS
total/synth/OR/b0 1.21 1.26 +4.5% PASS
total/synth/OR/b1 1.20 1.18 -2.2% PASS
total/synth/PC/a0 2.75 2.88 +4.5% PASS
total/synth/PC/a1 1.98 1.91 -3.1% PASS
total/synth/PUSH1/p0 1.05 1.02 -2.3% PASS
total/synth/PUSH1/p1 1.15 1.13 -1.9% PASS
total/synth/PUSH10/p0 1.02 1.02 -0.5% PASS
total/synth/PUSH10/p1 1.14 1.17 +3.0% PASS
total/synth/PUSH11/p0 0.98 1.01 +2.6% PASS
total/synth/PUSH11/p1 1.54 1.30 -15.8% PASS
total/synth/PUSH12/p0 1.00 0.96 -4.3% PASS
total/synth/PUSH12/p1 1.27 1.32 +3.3% PASS
total/synth/PUSH13/p0 0.98 1.00 +1.6% PASS
total/synth/PUSH13/p1 1.15 1.14 -1.2% PASS
total/synth/PUSH14/p0 1.00 1.03 +2.8% PASS
total/synth/PUSH14/p1 1.36 1.33 -2.3% PASS
total/synth/PUSH15/p0 0.97 0.96 -1.2% PASS
total/synth/PUSH15/p1 1.31 1.27 -3.6% PASS
total/synth/PUSH16/p0 1.02 0.98 -4.4% PASS
total/synth/PUSH16/p1 1.15 1.19 +4.0% PASS
total/synth/PUSH17/p0 1.01 1.02 +1.5% PASS
total/synth/PUSH17/p1 1.39 1.31 -5.8% PASS
total/synth/PUSH18/p0 0.97 0.97 +0.3% PASS
total/synth/PUSH18/p1 1.36 1.29 -4.8% PASS
total/synth/PUSH19/p0 0.99 1.00 +0.6% PASS
total/synth/PUSH19/p1 1.14 1.15 +0.8% PASS
total/synth/PUSH2/p0 0.98 0.98 +0.0% PASS
total/synth/PUSH2/p1 1.31 1.27 -2.7% PASS
total/synth/PUSH20/p0 1.06 1.02 -3.6% PASS
total/synth/PUSH20/p1 1.33 1.27 -4.2% PASS
total/synth/PUSH21/p0 0.96 1.00 +4.0% PASS
total/synth/PUSH21/p1 1.31 1.31 +0.2% PASS
total/synth/PUSH22/p0 0.97 1.03 +5.7% PASS
total/synth/PUSH22/p1 1.14 1.14 +0.2% PASS
total/synth/PUSH23/p0 1.01 0.99 -2.1% PASS
total/synth/PUSH23/p1 1.36 1.29 -5.3% PASS
total/synth/PUSH24/p0 0.96 1.00 +4.1% PASS
total/synth/PUSH24/p1 1.30 1.32 +1.8% PASS
total/synth/PUSH25/p0 1.03 0.99 -4.0% PASS
total/synth/PUSH25/p1 1.16 1.15 -0.7% PASS
total/synth/PUSH26/p0 0.98 1.03 +4.9% PASS
total/synth/PUSH26/p1 1.38 1.32 -4.0% PASS
total/synth/PUSH27/p0 0.96 0.95 -0.9% PASS
total/synth/PUSH27/p1 1.36 1.31 -3.8% PASS
total/synth/PUSH28/p0 1.04 1.00 -3.6% PASS
total/synth/PUSH28/p1 1.18 1.15 -2.5% PASS
total/synth/PUSH29/p0 1.01 1.02 +1.0% PASS
total/synth/PUSH29/p1 1.39 1.27 -8.9% PASS
total/synth/PUSH3/p0 0.96 0.97 +0.6% PASS
total/synth/PUSH3/p1 1.29 1.30 +0.5% PASS
total/synth/PUSH30/p0 0.99 1.01 +1.8% PASS
total/synth/PUSH30/p1 1.29 1.27 -2.1% PASS
total/synth/PUSH31/p0 1.01 1.04 +3.5% PASS
total/synth/PUSH31/p1 1.16 1.17 +0.3% PASS
total/synth/PUSH32/p0 1.00 1.02 +1.9% PASS
total/synth/PUSH32/p1 1.33 1.31 -1.5% PASS
total/synth/PUSH4/p0 1.00 1.02 +1.4% PASS
total/synth/PUSH4/p1 1.14 1.14 -0.4% PASS
total/synth/PUSH5/p0 1.02 0.98 -4.0% PASS
total/synth/PUSH5/p1 1.42 1.28 -9.3% PASS
total/synth/PUSH6/p0 0.96 0.99 +3.9% PASS
total/synth/PUSH6/p1 1.30 1.31 +0.7% PASS
total/synth/PUSH7/p0 1.00 1.04 +4.1% PASS
total/synth/PUSH7/p1 1.15 1.15 -0.7% PASS
total/synth/PUSH8/p0 0.97 0.99 +2.3% PASS
total/synth/PUSH8/p1 1.29 1.33 +2.7% PASS
total/synth/PUSH9/p0 0.98 0.95 -3.0% PASS
total/synth/PUSH9/p1 1.28 1.30 +1.9% PASS
total/synth/RETURNDATASIZE/a0 2.00 1.99 -0.9% PASS
total/synth/RETURNDATASIZE/a1 3.43 3.26 -5.0% PASS
total/synth/SAR/b0 2.58 2.60 +0.6% PASS
total/synth/SAR/b1 4.27 4.00 -6.5% PASS
total/synth/SGT/b0 2.34 2.32 -1.1% PASS
total/synth/SGT/b1 2.07 2.07 +0.3% PASS
total/synth/SHL/b0 2.48 2.51 +1.3% PASS
total/synth/SHL/b1 1.01 1.01 +0.4% PASS
total/synth/SHR/b0 2.12 2.13 +0.2% PASS
total/synth/SHR/b1 1.52 1.48 -2.5% PASS
total/synth/SIGNEXTEND/b0 1.80 1.78 -1.3% PASS
total/synth/SIGNEXTEND/b1 3.26 3.21 -1.6% PASS
total/synth/SLT/b0 2.18 2.12 -2.8% PASS
total/synth/SLT/b1 2.27 2.30 +1.2% PASS
total/synth/SUB/b0 1.57 1.56 -0.8% PASS
total/synth/SUB/b1 1.55 1.61 +3.9% PASS
total/synth/SWAP1/s0 1.10 1.06 -3.0% PASS
total/synth/SWAP10/s0 1.07 1.11 +3.5% PASS
total/synth/SWAP11/s0 1.36 1.57 +14.8% PASS
total/synth/SWAP12/s0 1.43 1.60 +11.7% PASS
total/synth/SWAP13/s0 1.10 1.12 +1.6% PASS
total/synth/SWAP14/s0 1.46 1.54 +5.8% PASS
total/synth/SWAP15/s0 1.41 1.57 +10.9% PASS
total/synth/SWAP16/s0 1.09 1.10 +0.4% PASS
total/synth/SWAP2/s0 1.44 1.58 +10.3% PASS
total/synth/SWAP3/s0 1.49 1.56 +5.2% PASS
total/synth/SWAP4/s0 1.08 1.12 +3.5% PASS
total/synth/SWAP5/s0 1.34 1.54 +15.7% PASS
total/synth/SWAP6/s0 1.47 1.61 +9.4% PASS
total/synth/SWAP7/s0 1.10 1.38 +26.1% PASS
total/synth/SWAP8/s0 1.39 1.53 +9.9% PASS
total/synth/SWAP9/s0 1.37 1.63 +18.5% PASS
total/synth/XOR/b0 1.19 1.23 +3.6% PASS
total/synth/XOR/b1 1.19 1.21 +1.2% PASS
total/synth/loop_v1 4.44 4.68 +5.4% PASS
total/synth/loop_v2 4.75 4.61 -2.9% PASS

Summary: 194 benchmarks, 0 regressions


✅ Performance Check Passed (multipass)

Performance Benchmark Results (threshold: 25%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 1.49 1.44 -3.4% PASS
total/main/blake2b_huff/empty 0.02 0.02 -8.7% PASS
total/main/blake2b_shifts/8415nulls 4.34 4.36 +0.5% PASS
total/main/sha1_divs/5311 0.84 0.86 +2.0% PASS
total/main/sha1_divs/empty 0.01 0.01 +0.5% PASS
total/main/sha1_shifts/5311 0.76 0.77 +0.8% PASS
total/main/sha1_shifts/empty 0.01 0.01 -0.4% PASS
total/main/snailtracer/benchmark 46.87 46.53 -0.7% PASS
total/main/structarray_alloc/nfts_rank 0.26 0.26 +0.4% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 +0.0% PASS
total/main/swap_math/received 0.01 0.01 -1.4% PASS
total/main/swap_math/spent 0.01 0.00 -2.1% PASS
total/main/weierstrudel/1 0.33 0.34 +3.2% PASS
total/main/weierstrudel/15 3.69 3.63 -1.6% PASS
total/micro/JUMPDEST_n0/empty 0.00 0.00 +1.7% PASS
total/micro/jump_around/empty 0.07 0.07 +4.4% PASS
total/micro/loop_with_many_jumpdests/empty 0.01 0.01 -0.9% PASS
total/micro/memory_grow_mload/by1 0.02 0.02 -7.8% PASS
total/micro/memory_grow_mload/by16 0.02 0.02 -1.8% PASS
total/micro/memory_grow_mload/by32 0.01 0.01 +1.0% PASS
total/micro/memory_grow_mload/nogrow 0.01 0.01 +1.0% PASS
total/micro/memory_grow_mstore/by1 0.02 0.02 -2.9% PASS
total/micro/memory_grow_mstore/by16 0.01 0.01 +0.6% PASS
total/micro/memory_grow_mstore/by32 0.02 0.02 -1.4% PASS
total/micro/memory_grow_mstore/nogrow 0.02 0.02 +0.4% PASS
total/micro/signextend/one 0.01 0.01 +0.2% PASS
total/micro/signextend/zero 0.01 0.01 -3.5% PASS
total/synth/ADD/b0 0.00 0.00 +0.2% PASS
total/synth/ADD/b1 0.00 0.00 -0.4% PASS
total/synth/ADDRESS/a0 0.22 0.22 +1.0% PASS
total/synth/ADDRESS/a1 0.15 0.15 -0.1% PASS
total/synth/AND/b0 0.00 0.00 +0.5% PASS
total/synth/AND/b1 0.00 0.00 -0.5% PASS
total/synth/BYTE/b0 0.00 0.00 +0.7% PASS
total/synth/BYTE/b1 0.00 0.00 +1.2% PASS
total/synth/CALLDATASIZE/a0 0.12 0.12 +1.6% PASS
total/synth/CALLDATASIZE/a1 0.07 0.07 +0.0% PASS
total/synth/CALLER/a0 0.23 0.24 +7.3% PASS
total/synth/CALLER/a1 0.24 0.24 +2.0% PASS
total/synth/CALLVALUE/a0 0.19 0.19 +0.3% PASS
total/synth/CALLVALUE/a1 0.29 0.32 +11.8% PASS
total/synth/CODESIZE/a0 0.12 0.12 -0.1% PASS
total/synth/CODESIZE/a1 0.14 0.12 -14.5% PASS
total/synth/DUP1/d0 0.00 0.00 -0.1% PASS
total/synth/DUP1/d1 0.00 0.00 +0.4% PASS
total/synth/DUP10/d0 0.00 0.00 +0.8% PASS
total/synth/DUP10/d1 0.00 0.00 +0.7% PASS
total/synth/DUP11/d0 0.00 0.00 +0.5% PASS
total/synth/DUP11/d1 0.00 0.00 -0.7% PASS
total/synth/DUP12/d0 0.00 0.00 +0.6% PASS
total/synth/DUP12/d1 0.00 0.00 +0.9% PASS
total/synth/DUP13/d0 0.00 0.00 -0.1% PASS
total/synth/DUP13/d1 0.00 0.00 -0.4% PASS
total/synth/DUP14/d0 0.00 0.00 +0.2% PASS
total/synth/DUP14/d1 0.00 0.00 +1.1% PASS
total/synth/DUP15/d0 0.00 0.00 -0.3% PASS
total/synth/DUP15/d1 0.00 0.00 +0.3% PASS
total/synth/DUP16/d0 0.00 0.00 +0.9% PASS
total/synth/DUP16/d1 0.00 0.00 +0.3% PASS
total/synth/DUP2/d0 0.00 0.00 +0.3% PASS
total/synth/DUP2/d1 0.00 0.00 -1.5% PASS
total/synth/DUP3/d0 0.00 0.00 +0.7% PASS
total/synth/DUP3/d1 0.00 0.00 +0.4% PASS
total/synth/DUP4/d0 0.00 0.00 +1.2% PASS
total/synth/DUP4/d1 0.00 0.00 +0.2% PASS
total/synth/DUP5/d0 0.00 0.00 +0.6% PASS
total/synth/DUP5/d1 0.00 0.00 -0.4% PASS
total/synth/DUP6/d0 0.00 0.00 +0.9% PASS
total/synth/DUP6/d1 0.00 0.00 +0.4% PASS
total/synth/DUP7/d0 0.00 0.00 +1.5% PASS
total/synth/DUP7/d1 0.00 0.00 +0.2% PASS
total/synth/DUP8/d0 0.00 0.00 -0.2% PASS
total/synth/DUP8/d1 0.00 0.00 +0.0% PASS
total/synth/DUP9/d0 0.00 0.00 -0.9% PASS
total/synth/DUP9/d1 0.00 0.00 +0.2% PASS
total/synth/EQ/b0 0.00 0.00 +1.0% PASS
total/synth/EQ/b1 0.00 0.00 -1.1% PASS
total/synth/GAS/a0 0.76 0.77 +0.1% PASS
total/synth/GAS/a1 0.92 0.93 +0.3% PASS
total/synth/GT/b0 0.00 0.00 -0.6% PASS
total/synth/GT/b1 0.00 0.00 +0.7% PASS
total/synth/ISZERO/u0 0.00 0.00 -0.5% PASS
total/synth/JUMPDEST/n0 0.00 0.00 +0.3% PASS
total/synth/LT/b0 0.00 0.00 +0.9% PASS
total/synth/LT/b1 0.00 0.00 +0.3% PASS
total/synth/MSIZE/a0 0.00 0.00 +1.3% PASS
total/synth/MSIZE/a1 0.00 0.00 +0.0% PASS
total/synth/MUL/b0 0.00 0.00 +0.5% PASS
total/synth/MUL/b1 0.00 0.00 +0.6% PASS
total/synth/NOT/u0 0.00 0.00 -0.1% PASS
total/synth/OR/b0 0.00 0.00 +0.1% PASS
total/synth/OR/b1 0.00 0.00 +0.7% PASS
total/synth/PC/a0 0.00 0.00 -0.4% PASS
total/synth/PC/a1 0.00 0.00 +0.5% PASS
total/synth/PUSH1/p0 0.00 0.00 +0.1% PASS
total/synth/PUSH1/p1 0.00 0.00 +0.5% PASS
total/synth/PUSH10/p0 0.00 0.00 -2.6% PASS
total/synth/PUSH10/p1 0.00 0.00 +1.3% PASS
total/synth/PUSH11/p0 0.00 0.00 +5.1% PASS
total/synth/PUSH11/p1 0.00 0.00 -1.7% PASS
total/synth/PUSH12/p0 0.00 0.00 -2.4% PASS
total/synth/PUSH12/p1 0.00 0.00 +3.5% PASS
total/synth/PUSH13/p0 0.00 0.00 +1.5% PASS
total/synth/PUSH13/p1 0.00 0.00 +0.1% PASS
total/synth/PUSH14/p0 0.00 0.00 -3.6% PASS
total/synth/PUSH14/p1 0.00 0.00 -1.2% PASS
total/synth/PUSH15/p0 0.00 0.00 +2.3% PASS
total/synth/PUSH15/p1 0.00 0.00 +2.0% PASS
total/synth/PUSH16/p0 0.00 0.00 -1.9% PASS
total/synth/PUSH16/p1 0.00 0.00 -0.0% PASS
total/synth/PUSH17/p0 0.00 0.00 +3.4% PASS
total/synth/PUSH17/p1 0.00 0.00 +2.5% PASS
total/synth/PUSH18/p0 0.00 0.00 +0.7% PASS
total/synth/PUSH18/p1 0.00 0.00 -2.7% PASS
total/synth/PUSH19/p0 0.00 0.00 +0.2% PASS
total/synth/PUSH19/p1 0.00 0.00 +0.1% PASS
total/synth/PUSH2/p0 0.00 0.00 -0.2% PASS
total/synth/PUSH2/p1 0.00 0.00 +2.6% PASS
total/synth/PUSH20/p0 0.00 0.00 +4.0% PASS
total/synth/PUSH20/p1 0.00 0.00 +3.4% PASS
total/synth/PUSH21/p0 0.00 0.00 -0.3% PASS
total/synth/PUSH21/p1 0.00 0.00 +0.5% PASS
total/synth/PUSH22/p0 1.70 1.90 +11.6% PASS
total/synth/PUSH22/p1 1.73 1.77 +2.4% PASS
total/synth/PUSH23/p0 1.73 1.89 +8.9% PASS
total/synth/PUSH23/p1 2.10 2.22 +5.5% PASS
total/synth/PUSH24/p0 1.24 1.32 +6.7% PASS
total/synth/PUSH24/p1 2.15 2.21 +3.0% PASS
total/synth/PUSH25/p0 1.70 1.92 +13.1% PASS
total/synth/PUSH25/p1 1.73 1.77 +2.0% PASS
total/synth/PUSH26/p0 1.79 1.88 +4.7% PASS
total/synth/PUSH26/p1 2.00 2.20 +9.8% PASS
total/synth/PUSH27/p0 1.25 1.32 +5.6% PASS
total/synth/PUSH27/p1 2.15 2.20 +2.5% PASS
total/synth/PUSH28/p0 1.74 1.87 +7.4% PASS
total/synth/PUSH28/p1 1.73 1.80 +4.2% PASS
total/synth/PUSH29/p0 1.76 1.86 +5.5% PASS
total/synth/PUSH29/p1 2.09 2.20 +4.8% PASS
total/synth/PUSH3/p0 0.00 0.00 -1.6% PASS
total/synth/PUSH3/p1 0.00 0.00 +0.8% PASS
total/synth/PUSH30/p0 1.28 1.34 +4.6% PASS
total/synth/PUSH30/p1 2.12 2.22 +4.6% PASS
total/synth/PUSH31/p0 1.84 1.87 +1.2% PASS
total/synth/PUSH31/p1 1.77 1.85 +4.9% PASS
total/synth/PUSH32/p0 1.75 1.88 +7.3% PASS
total/synth/PUSH32/p1 1.98 2.19 +10.6% PASS
total/synth/PUSH4/p0 0.00 0.00 +1.6% PASS
total/synth/PUSH4/p1 0.00 0.00 +0.2% PASS
total/synth/PUSH5/p0 0.00 0.00 -0.6% PASS
total/synth/PUSH5/p1 0.00 0.00 +2.3% PASS
total/synth/PUSH6/p0 0.00 0.00 -2.4% PASS
total/synth/PUSH6/p1 0.00 0.00 -2.9% PASS
total/synth/PUSH7/p0 0.00 0.00 +1.2% PASS
total/synth/PUSH7/p1 0.00 0.00 -0.9% PASS
total/synth/PUSH8/p0 0.00 0.00 -2.0% PASS
total/synth/PUSH8/p1 0.00 0.00 +3.3% PASS
total/synth/PUSH9/p0 0.00 0.00 -2.6% PASS
total/synth/PUSH9/p1 0.00 0.00 +0.2% PASS
total/synth/RETURNDATASIZE/a0 0.03 0.03 +0.0% PASS
total/synth/RETURNDATASIZE/a1 0.06 0.06 +12.4% PASS
total/synth/SAR/b0 0.00 0.00 +0.7% PASS
total/synth/SAR/b1 0.00 0.00 +0.1% PASS
total/synth/SGT/b0 0.00 0.00 +1.0% PASS
total/synth/SGT/b1 0.00 0.00 +0.3% PASS
total/synth/SHL/b0 0.00 0.00 +0.9% PASS
total/synth/SHL/b1 0.00 0.00 +0.6% PASS
total/synth/SHR/b0 0.00 0.00 +0.3% PASS
total/synth/SHR/b1 0.00 0.00 +1.9% PASS
total/synth/SIGNEXTEND/b0 0.00 0.00 +0.4% PASS
total/synth/SIGNEXTEND/b1 0.00 0.00 -0.3% PASS
total/synth/SLT/b0 0.00 0.00 +0.4% PASS
total/synth/SLT/b1 0.00 0.00 -0.5% PASS
total/synth/SUB/b0 0.00 0.00 -0.7% PASS
total/synth/SUB/b1 0.00 0.00 +0.1% PASS
total/synth/SWAP1/s0 0.00 0.00 +0.2% PASS
total/synth/SWAP10/s0 0.00 0.00 +1.1% PASS
total/synth/SWAP11/s0 0.00 0.00 -0.1% PASS
total/synth/SWAP12/s0 0.00 0.00 -0.3% PASS
total/synth/SWAP13/s0 0.00 0.00 +0.6% PASS
total/synth/SWAP14/s0 0.00 0.00 -0.5% PASS
total/synth/SWAP15/s0 0.00 0.00 -0.8% PASS
total/synth/SWAP16/s0 0.00 0.00 +0.3% PASS
total/synth/SWAP2/s0 0.00 0.00 +0.3% PASS
total/synth/SWAP3/s0 0.00 0.00 -0.7% PASS
total/synth/SWAP4/s0 0.00 0.00 +0.2% PASS
total/synth/SWAP5/s0 0.00 0.00 -0.8% PASS
total/synth/SWAP6/s0 0.00 0.00 -0.1% PASS
total/synth/SWAP7/s0 0.00 0.00 +0.5% PASS
total/synth/SWAP8/s0 0.00 0.00 +0.7% PASS
total/synth/SWAP9/s0 0.00 0.00 -0.5% PASS
total/synth/XOR/b0 0.00 0.00 +0.4% PASS
total/synth/XOR/b1 0.00 0.00 +0.2% PASS
total/synth/loop_v1 8.40 8.57 +2.1% PASS
total/synth/loop_v2 8.40 8.53 +1.5% PASS

Summary: 194 benchmarks, 0 regressions


@abmcar

abmcar commented Oct 11, 2026

Copy link
Copy Markdown
Contributor Author

Closing in favour of #615, which removes the same duplicate call.

@abmcar abmcar closed this Oct 11, 2026
@abmcar
abmcar deleted the perf/evm-cache-single-jump-resolution branch October 11, 2026 07:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants