Skip to content

fix(evm): restore memory and gas correctness - #610

Merged
zoowii merged 9 commits into
DTVMStack:mainfrom
ys8888john:fix/evm-runtime-and-state-issues
Oct 8, 2026
Merged

zoowii merged 9 commits into
DTVMStack:mainfrom
ys8888john:fix/evm-runtime-and-state-issues

Conversation

@ys8888john

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

fix #591, #592, #593, #594, #595, #601, #602, #603, #606

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

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

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

6. Release note

None

@github-actions

github-actions Bot commented Sep 14, 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 2.10 1.93 -8.4% PASS
total/main/blake2b_huff/empty 0.03 0.03 +7.4% PASS
total/main/blake2b_shifts/8415nulls 11.32 11.27 -0.5% PASS
total/main/sha1_divs/5311 6.86 6.77 -1.3% PASS
total/main/sha1_divs/empty 0.08 0.08 +0.4% PASS
total/main/sha1_shifts/5311 4.29 4.45 +3.7% PASS
total/main/sha1_shifts/empty 0.04 0.04 +0.3% PASS
total/main/snailtracer/benchmark 69.48 70.50 +1.5% PASS
total/main/structarray_alloc/nfts_rank 0.95 0.97 +3.0% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 -1.2% PASS
total/main/swap_math/received 0.01 0.01 -12.0% PASS
total/main/swap_math/spent 0.01 0.01 +0.4% PASS
total/main/weierstrudel/1 0.26 0.25 -3.1% PASS
total/main/weierstrudel/15 2.86 2.86 -0.0% PASS
total/micro/JUMPDEST_n0/empty 2.34 2.34 +0.0% PASS
total/micro/jump_around/empty 0.07 0.08 +2.7% PASS
total/micro/loop_with_many_jumpdests/empty 52.18 52.59 +0.8% PASS
total/micro/memory_grow_mload/by1 0.13 0.14 +9.3% PASS
total/micro/memory_grow_mload/by16 0.15 0.16 +6.9% PASS
total/micro/memory_grow_mload/by32 0.09 0.09 -0.0% PASS
total/micro/memory_grow_mload/nogrow 0.07 0.07 +3.9% PASS
total/micro/memory_grow_mstore/by1 0.15 0.15 -1.3% PASS
total/micro/memory_grow_mstore/by16 0.09 0.09 -0.2% PASS
total/micro/memory_grow_mstore/by32 0.19 0.19 +4.7% PASS
total/micro/memory_grow_mstore/nogrow 0.15 0.15 +0.1% PASS
total/micro/signextend/one 0.20 0.20 -1.1% PASS
total/micro/signextend/zero 0.37 0.35 -4.1% PASS
total/synth/ADD/b0 1.75 1.75 -0.0% PASS
total/synth/ADD/b1 2.22 2.21 -0.7% PASS
total/synth/ADDRESS/a0 5.08 5.14 +1.0% PASS
total/synth/ADDRESS/a1 4.54 4.52 -0.4% PASS
total/synth/AND/b0 1.43 1.43 +0.0% PASS
total/synth/AND/b1 1.79 1.79 +0.2% PASS
total/synth/BYTE/b0 5.36 5.35 -0.1% PASS
total/synth/BYTE/b1 7.16 7.09 -1.1% PASS
total/synth/CALLDATASIZE/a0 3.86 3.97 +2.9% PASS
total/synth/CALLDATASIZE/a1 3.09 3.16 +2.3% PASS
total/synth/CALLER/a0 5.11 5.00 -2.1% PASS
total/synth/CALLER/a1 5.39 5.26 -2.4% PASS
total/synth/CALLVALUE/a0 3.07 3.08 +0.3% PASS
total/synth/CALLVALUE/a1 4.47 4.71 +5.4% PASS
total/synth/CODESIZE/a0 4.37 4.63 +6.0% PASS
total/synth/CODESIZE/a1 4.76 4.67 -1.8% PASS
total/synth/DUP1/d0 1.42 1.45 +1.9% PASS
total/synth/DUP1/d1 1.55 1.29 -16.8% PASS
total/synth/DUP10/d0 1.51 1.48 -2.2% PASS
total/synth/DUP10/d1 1.56 1.39 -10.8% PASS
total/synth/DUP11/d0 0.88 1.07 +21.3% PASS
total/synth/DUP11/d1 1.48 1.24 -16.0% PASS
total/synth/DUP12/d0 1.46 1.41 -3.3% PASS
total/synth/DUP12/d1 0.87 0.87 -0.2% PASS
total/synth/DUP13/d0 1.45 1.32 -8.9% PASS
total/synth/DUP13/d1 1.31 1.30 -1.2% PASS
total/synth/DUP14/d0 1.07 1.07 -0.3% PASS
total/synth/DUP14/d1 1.31 1.51 +15.1% PASS
total/synth/DUP15/d0 1.47 1.46 -0.4% PASS
total/synth/DUP15/d1 0.86 0.94 +8.7% PASS
total/synth/DUP16/d0 1.37 1.28 -6.3% PASS
total/synth/DUP16/d1 1.50 1.43 -4.5% PASS
total/synth/DUP2/d0 1.07 1.08 +0.2% PASS
total/synth/DUP2/d1 1.45 1.30 -10.3% PASS
total/synth/DUP3/d0 1.32 1.29 -2.2% PASS
total/synth/DUP3/d1 0.76 0.87 +14.0% PASS
total/synth/DUP4/d0 1.41 1.43 +0.8% PASS
total/synth/DUP4/d1 1.46 1.38 -5.4% PASS
total/synth/DUP5/d0 1.07 0.87 -19.0% PASS
total/synth/DUP5/d1 1.35 1.23 -8.5% PASS
total/synth/DUP6/d0 1.47 1.49 +1.5% PASS
total/synth/DUP6/d1 1.08 0.87 -19.7% PASS
total/synth/DUP7/d0 1.43 1.41 -1.1% PASS
total/synth/DUP7/d1 1.39 1.62 +16.5% PASS
total/synth/DUP8/d0 1.07 1.07 -0.0% PASS
total/synth/DUP8/d1 1.42 1.23 -13.8% PASS
total/synth/DUP9/d0 1.45 1.45 +0.5% PASS
total/synth/DUP9/d1 1.08 0.87 -19.9% PASS
total/synth/EQ/b0 4.17 4.16 -0.2% PASS
total/synth/EQ/b1 4.36 4.30 -1.3% PASS
total/synth/GAS/a0 2.96 3.07 +3.9% PASS
total/synth/GAS/a1 5.27 5.09 -3.3% PASS
total/synth/GT/b0 4.45 4.44 -0.1% PASS
total/synth/GT/b1 4.37 4.34 -0.7% PASS
total/synth/ISZERO/u0 6.46 6.46 +0.1% PASS
total/synth/JUMPDEST/n0 2.34 2.33 -0.1% PASS
total/synth/LT/b0 4.44 4.43 -0.1% PASS
total/synth/LT/b1 3.71 3.70 -0.3% PASS
total/synth/MSIZE/a0 4.55 4.60 +1.1% PASS
total/synth/MSIZE/a1 4.96 4.98 +0.4% PASS
total/synth/MUL/b0 4.93 4.91 -0.6% PASS
total/synth/MUL/b1 4.64 4.63 -0.2% PASS
total/synth/NOT/u0 1.57 1.56 -0.6% PASS
total/synth/OR/b0 1.70 1.68 -0.7% PASS
total/synth/OR/b1 1.36 1.36 -0.5% PASS
total/synth/PC/a0 3.83 3.92 +2.2% PASS
total/synth/PC/a1 2.93 2.99 +2.0% PASS
total/synth/PUSH1/p0 1.59 1.68 +5.7% PASS
total/synth/PUSH1/p1 1.52 1.31 -13.5% PASS
total/synth/PUSH10/p0 1.56 1.58 +1.3% PASS
total/synth/PUSH10/p1 1.31 1.31 +0.1% PASS
total/synth/PUSH11/p0 1.60 1.59 -0.6% PASS
total/synth/PUSH11/p1 1.64 1.62 -1.0% PASS
total/synth/PUSH12/p0 1.13 1.14 +0.6% PASS
total/synth/PUSH12/p1 1.79 1.74 -2.8% PASS
total/synth/PUSH13/p0 1.75 1.59 -8.8% PASS
total/synth/PUSH13/p1 1.31 1.31 +0.6% PASS
total/synth/PUSH14/p0 1.57 1.61 +2.1% PASS
total/synth/PUSH14/p1 1.66 1.66 +0.1% PASS
total/synth/PUSH15/p0 1.13 1.13 -0.4% PASS
total/synth/PUSH15/p1 1.99 1.65 -17.3% PASS
total/synth/PUSH16/p0 1.55 1.67 +7.7% PASS
total/synth/PUSH16/p1 1.31 1.31 +0.2% PASS
total/synth/PUSH17/p0 1.55 1.57 +1.1% PASS
total/synth/PUSH17/p1 1.85 1.69 -8.6% PASS
total/synth/PUSH18/p0 1.13 1.13 +0.0% PASS
total/synth/PUSH18/p1 1.65 1.97 +19.7% PASS
total/synth/PUSH19/p0 1.63 1.65 +1.0% PASS
total/synth/PUSH19/p1 1.31 1.55 +18.1% PASS
total/synth/PUSH2/p0 1.60 1.58 -1.3% PASS
total/synth/PUSH2/p1 1.94 1.66 -14.4% PASS
total/synth/PUSH20/p0 1.52 1.55 +1.7% PASS
total/synth/PUSH20/p1 1.90 1.81 -4.7% PASS
total/synth/PUSH21/p0 1.14 1.14 +0.1% PASS
total/synth/PUSH21/p1 1.61 1.67 +4.3% PASS
total/synth/PUSH22/p0 1.61 1.67 +3.6% PASS
total/synth/PUSH22/p1 1.32 1.37 +3.7% PASS
total/synth/PUSH23/p0 1.60 1.57 -1.8% PASS
total/synth/PUSH23/p1 1.72 1.65 -4.2% PASS
total/synth/PUSH24/p0 1.13 1.13 -0.4% PASS
total/synth/PUSH24/p1 1.65 1.77 +7.4% PASS
total/synth/PUSH25/p0 1.57 1.51 -3.5% PASS
total/synth/PUSH25/p1 1.52 1.33 -12.9% PASS
total/synth/PUSH26/p0 1.65 1.53 -7.3% PASS
total/synth/PUSH26/p1 1.73 1.69 -1.9% PASS
total/synth/PUSH27/p0 1.14 1.14 +0.5% PASS
total/synth/PUSH27/p1 1.69 1.84 +8.3% PASS
total/synth/PUSH28/p0 1.65 1.61 -2.6% PASS
total/synth/PUSH28/p1 1.31 1.31 -0.1% PASS
total/synth/PUSH29/p0 1.66 1.58 -4.9% PASS
total/synth/PUSH29/p1 1.65 1.66 +0.8% PASS
total/synth/PUSH3/p0 1.14 1.13 -0.7% PASS
total/synth/PUSH3/p1 1.75 1.89 +8.1% PASS
total/synth/PUSH30/p0 1.14 1.13 -0.8% PASS
total/synth/PUSH30/p1 1.77 1.86 +4.9% PASS
total/synth/PUSH31/p0 1.47 1.61 +9.4% PASS
total/synth/PUSH31/p1 1.32 1.53 +15.9% PASS
total/synth/PUSH32/p0 1.55 1.65 +6.6% PASS
total/synth/PUSH32/p1 1.87 1.61 -13.5% PASS
total/synth/PUSH4/p0 1.58 1.55 -2.4% PASS
total/synth/PUSH4/p1 1.30 1.31 +0.3% PASS
total/synth/PUSH5/p0 1.57 1.65 +5.0% PASS
total/synth/PUSH5/p1 1.78 1.70 -4.8% PASS
total/synth/PUSH6/p0 1.13 1.13 -0.4% PASS
total/synth/PUSH6/p1 1.98 1.64 -17.3% PASS
total/synth/PUSH7/p0 1.66 1.55 -6.5% PASS
total/synth/PUSH7/p1 1.31 1.31 +0.4% PASS
total/synth/PUSH8/p0 1.64 1.64 +0.1% PASS
total/synth/PUSH8/p1 1.63 1.76 +8.4% PASS
total/synth/PUSH9/p0 1.13 1.13 +0.3% PASS
total/synth/PUSH9/p1 1.64 1.89 +15.2% PASS
total/synth/RETURNDATASIZE/a0 2.87 2.88 +0.3% PASS
total/synth/RETURNDATASIZE/a1 4.61 4.54 -1.4% PASS
total/synth/SAR/b0 3.38 3.38 -0.0% PASS
total/synth/SAR/b1 5.69 5.53 -2.8% PASS
total/synth/SGT/b0 3.29 3.31 +0.6% PASS
total/synth/SGT/b1 2.82 2.82 -0.1% PASS
total/synth/SHL/b0 3.26 3.24 -0.6% PASS
total/synth/SHL/b1 1.40 1.40 -0.1% PASS
total/synth/SHR/b0 3.06 3.05 -0.4% PASS
total/synth/SHR/b1 2.50 2.52 +0.7% PASS
total/synth/SIGNEXTEND/b0 2.79 2.80 +0.3% PASS
total/synth/SIGNEXTEND/b1 4.65 4.79 +3.0% PASS
total/synth/SLT/b0 3.06 3.06 +0.0% PASS
total/synth/SLT/b1 3.27 3.30 +0.8% PASS
total/synth/SUB/b0 2.17 2.16 -0.5% PASS
total/synth/SUB/b1 2.17 2.16 -0.5% PASS
total/synth/SWAP1/s0 1.31 1.31 +0.1% PASS
total/synth/SWAP10/s0 1.32 1.32 +0.2% PASS
total/synth/SWAP11/s0 1.91 1.90 -0.3% PASS
total/synth/SWAP12/s0 2.02 2.04 +1.2% PASS
total/synth/SWAP13/s0 1.32 1.32 -0.5% PASS
total/synth/SWAP14/s0 1.98 2.03 +2.4% PASS
total/synth/SWAP15/s0 2.99 1.96 -34.5% PASS
total/synth/SWAP16/s0 1.32 1.32 +0.0% PASS
total/synth/SWAP2/s0 2.11 1.91 -9.5% PASS
total/synth/SWAP3/s0 2.01 1.98 -1.5% PASS
total/synth/SWAP4/s0 1.31 1.31 -0.0% PASS
total/synth/SWAP5/s0 1.99 2.09 +5.0% PASS
total/synth/SWAP6/s0 2.03 1.98 -2.6% PASS
total/synth/SWAP7/s0 1.31 1.31 -0.1% PASS
total/synth/SWAP8/s0 2.02 1.89 -6.5% PASS
total/synth/SWAP9/s0 2.04 1.99 -2.5% PASS
total/synth/XOR/b0 1.68 1.68 -0.4% PASS
total/synth/XOR/b1 1.65 1.71 +3.6% PASS
total/synth/loop_v1 7.26 7.12 -1.9% PASS
total/synth/loop_v2 7.17 7.04 -1.8% 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.30 1.30 +0.3% PASS
total/main/blake2b_huff/empty 0.02 0.02 -4.3% PASS
total/main/blake2b_shifts/8415nulls 4.41 4.31 -2.2% PASS
total/main/sha1_divs/5311 0.87 0.87 +0.2% PASS
total/main/sha1_divs/empty 0.01 0.01 -2.0% PASS
total/main/sha1_shifts/5311 0.77 0.77 -0.8% PASS
total/main/sha1_shifts/empty 0.01 0.01 -0.4% PASS
total/main/snailtracer/benchmark 47.12 46.80 -0.7% PASS
total/main/structarray_alloc/nfts_rank 0.26 0.27 +1.3% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 -1.1% PASS
total/main/swap_math/received 0.01 0.01 -1.0% PASS
total/main/swap_math/spent 0.01 0.00 -4.0% PASS
total/main/weierstrudel/1 0.33 0.33 -1.7% PASS
total/main/weierstrudel/15 3.75 3.76 +0.2% PASS
total/micro/JUMPDEST_n0/empty 0.00 0.00 -2.0% PASS
total/micro/jump_around/empty 0.07 0.06 -8.8% PASS
total/micro/loop_with_many_jumpdests/empty 0.01 0.01 -0.5% PASS
total/micro/memory_grow_mload/by1 0.02 0.02 +0.1% PASS
total/micro/memory_grow_mload/by16 0.02 0.02 +7.0% PASS
total/micro/memory_grow_mload/by32 0.01 0.01 +0.0% PASS
total/micro/memory_grow_mload/nogrow 0.01 0.01 +0.3% PASS
total/micro/memory_grow_mstore/by1 0.02 0.02 +3.0% PASS
total/micro/memory_grow_mstore/by16 0.01 0.01 +0.4% PASS
total/micro/memory_grow_mstore/by32 0.02 0.02 +5.0% PASS
total/micro/memory_grow_mstore/nogrow 0.02 0.02 +1.8% PASS
total/micro/signextend/one 0.01 0.01 -0.8% PASS
total/micro/signextend/zero 0.01 0.01 +1.1% PASS
total/synth/ADD/b0 0.00 0.00 -1.3% PASS
total/synth/ADD/b1 0.00 0.00 -0.3% PASS
total/synth/ADDRESS/a0 0.22 0.22 +0.1% PASS
total/synth/ADDRESS/a1 0.15 0.15 +0.0% PASS
total/synth/AND/b0 0.00 0.00 -1.6% PASS
total/synth/AND/b1 0.00 0.00 +1.5% PASS
total/synth/BYTE/b0 0.00 0.00 -1.8% PASS
total/synth/BYTE/b1 0.00 0.00 +1.3% PASS
total/synth/CALLDATASIZE/a0 0.12 0.12 +1.2% PASS
total/synth/CALLDATASIZE/a1 0.07 0.07 -0.6% PASS
total/synth/CALLER/a0 0.26 0.22 -14.0% PASS
total/synth/CALLER/a1 0.23 0.23 -0.4% PASS
total/synth/CALLVALUE/a0 0.19 0.19 -0.3% PASS
total/synth/CALLVALUE/a1 0.28 0.28 +2.1% PASS
total/synth/CODESIZE/a0 0.12 0.12 +0.7% PASS
total/synth/CODESIZE/a1 0.12 0.12 +3.4% PASS
total/synth/DUP1/d0 0.00 0.00 +0.2% PASS
total/synth/DUP1/d1 0.00 0.00 +0.3% PASS
total/synth/DUP10/d0 0.00 0.00 +0.5% PASS
total/synth/DUP10/d1 0.00 0.00 +0.5% PASS
total/synth/DUP11/d0 0.00 0.00 -1.4% PASS
total/synth/DUP11/d1 0.00 0.00 +2.2% PASS
total/synth/DUP12/d0 0.00 0.00 -1.6% PASS
total/synth/DUP12/d1 0.00 0.00 -2.2% PASS
total/synth/DUP13/d0 0.00 0.00 -0.3% PASS
total/synth/DUP13/d1 0.00 0.00 +0.7% PASS
total/synth/DUP14/d0 0.00 0.00 -2.1% PASS
total/synth/DUP14/d1 0.00 0.00 +2.5% PASS
total/synth/DUP15/d0 0.00 0.00 -0.2% PASS
total/synth/DUP15/d1 0.00 0.00 -1.5% PASS
total/synth/DUP16/d0 0.00 0.00 +0.6% PASS
total/synth/DUP16/d1 0.00 0.00 +0.7% PASS
total/synth/DUP2/d0 0.00 0.00 -1.3% PASS
total/synth/DUP2/d1 0.00 0.00 +0.6% PASS
total/synth/DUP3/d0 0.00 0.00 +1.2% PASS
total/synth/DUP3/d1 0.00 0.00 -1.7% PASS
total/synth/DUP4/d0 0.00 0.00 +0.2% PASS
total/synth/DUP4/d1 0.00 0.00 +0.3% PASS
total/synth/DUP5/d0 0.00 0.00 -1.6% PASS
total/synth/DUP5/d1 0.00 0.00 -0.4% PASS
total/synth/DUP6/d0 0.00 0.00 -0.6% PASS
total/synth/DUP6/d1 0.00 0.00 -2.0% PASS
total/synth/DUP7/d0 0.00 0.00 +0.4% PASS
total/synth/DUP7/d1 0.00 0.00 +1.2% PASS
total/synth/DUP8/d0 0.00 0.00 -1.8% PASS
total/synth/DUP8/d1 0.00 0.00 -0.1% PASS
total/synth/DUP9/d0 0.00 0.00 +2.2% PASS
total/synth/DUP9/d1 0.00 0.00 -2.0% PASS
total/synth/EQ/b0 0.00 0.00 -0.4% PASS
total/synth/EQ/b1 0.00 0.00 -0.9% PASS
total/synth/GAS/a0 0.76 0.77 +0.1% PASS
total/synth/GAS/a1 0.92 0.93 +0.7% PASS
total/synth/GT/b0 0.00 0.00 +0.3% PASS
total/synth/GT/b1 0.00 0.00 -1.8% PASS
total/synth/ISZERO/u0 0.00 0.00 +0.2% PASS
total/synth/JUMPDEST/n0 0.00 0.00 -1.6% PASS
total/synth/LT/b0 0.00 0.00 +0.6% PASS
total/synth/LT/b1 0.00 0.00 -1.7% PASS
total/synth/MSIZE/a0 0.00 0.00 +0.2% PASS
total/synth/MSIZE/a1 0.00 0.00 +0.3% PASS
total/synth/MUL/b0 0.00 0.00 +1.3% PASS
total/synth/MUL/b1 0.00 0.00 -1.6% PASS
total/synth/NOT/u0 0.00 0.00 +1.9% PASS
total/synth/OR/b0 0.00 0.00 +0.4% PASS
total/synth/OR/b1 0.00 0.00 -1.6% PASS
total/synth/PC/a0 0.00 0.00 -0.3% PASS
total/synth/PC/a1 0.00 0.00 -1.5% PASS
total/synth/PUSH1/p0 0.00 0.00 +1.5% PASS
total/synth/PUSH1/p1 0.00 0.00 -2.4% PASS
total/synth/PUSH10/p0 0.00 0.00 +6.4% PASS
total/synth/PUSH10/p1 0.00 0.00 +0.9% PASS
total/synth/PUSH11/p0 0.00 0.00 +6.4% PASS
total/synth/PUSH11/p1 0.00 0.00 -0.4% PASS
total/synth/PUSH12/p0 0.00 0.00 +0.1% PASS
total/synth/PUSH12/p1 0.00 0.00 +3.6% PASS
total/synth/PUSH13/p0 0.00 0.00 +2.6% PASS
total/synth/PUSH13/p1 0.00 0.00 +0.1% PASS
total/synth/PUSH14/p0 0.00 0.00 +3.3% PASS
total/synth/PUSH14/p1 0.00 0.00 +0.4% PASS
total/synth/PUSH15/p0 0.00 0.00 -1.7% PASS
total/synth/PUSH15/p1 0.00 0.00 -2.5% PASS
total/synth/PUSH16/p0 0.00 0.00 -0.3% PASS
total/synth/PUSH16/p1 0.00 0.00 -1.5% PASS
total/synth/PUSH17/p0 0.00 0.00 +0.1% PASS
total/synth/PUSH17/p1 0.00 0.00 -2.0% PASS
total/synth/PUSH18/p0 0.00 0.00 -1.3% PASS
total/synth/PUSH18/p1 0.00 0.00 -0.3% PASS
total/synth/PUSH19/p0 0.00 0.00 -7.5% PASS
total/synth/PUSH19/p1 0.00 0.00 -1.2% PASS
total/synth/PUSH2/p0 0.00 0.00 +0.8% PASS
total/synth/PUSH2/p1 0.00 0.00 +1.5% PASS
total/synth/PUSH20/p0 0.00 0.00 -1.6% PASS
total/synth/PUSH20/p1 0.00 0.00 -4.3% PASS
total/synth/PUSH21/p0 0.00 0.00 -1.3% PASS
total/synth/PUSH21/p1 0.00 0.00 +3.2% PASS
total/synth/PUSH22/p0 1.75 1.71 -2.3% PASS
total/synth/PUSH22/p1 1.72 1.83 +6.5% PASS
total/synth/PUSH23/p0 1.71 1.80 +5.8% PASS
total/synth/PUSH23/p1 2.07 2.09 +1.1% PASS
total/synth/PUSH24/p0 1.26 1.44 +14.6% PASS
total/synth/PUSH24/p1 1.97 2.03 +2.9% PASS
total/synth/PUSH25/p0 1.80 1.74 -3.1% PASS
total/synth/PUSH25/p1 1.74 1.83 +5.2% PASS
total/synth/PUSH26/p0 1.75 1.77 +1.1% PASS
total/synth/PUSH26/p1 2.02 1.95 -3.3% PASS
total/synth/PUSH27/p0 1.24 1.43 +15.4% PASS
total/synth/PUSH27/p1 2.36 1.99 -15.4% PASS
total/synth/PUSH28/p0 1.87 1.76 -6.0% PASS
total/synth/PUSH28/p1 1.72 1.85 +7.3% PASS
total/synth/PUSH29/p0 1.69 1.73 +2.2% PASS
total/synth/PUSH29/p1 1.98 2.09 +5.9% PASS
total/synth/PUSH3/p0 0.00 0.00 +0.0% PASS
total/synth/PUSH3/p1 0.00 0.00 -0.4% PASS
total/synth/PUSH30/p0 1.36 1.50 +10.8% PASS
total/synth/PUSH30/p1 2.11 2.01 -5.0% PASS
total/synth/PUSH31/p0 1.71 1.76 +3.1% PASS
total/synth/PUSH31/p1 1.76 1.91 +8.8% PASS
total/synth/PUSH32/p0 1.73 1.74 +0.2% PASS
total/synth/PUSH32/p1 2.06 1.94 -5.9% PASS
total/synth/PUSH4/p0 0.00 0.00 +0.6% PASS
total/synth/PUSH4/p1 0.00 0.00 -3.4% PASS
total/synth/PUSH5/p0 0.00 0.00 +0.8% PASS
total/synth/PUSH5/p1 0.00 0.00 -0.6% PASS
total/synth/PUSH6/p0 0.00 0.00 -3.4% PASS
total/synth/PUSH6/p1 0.00 0.00 +2.5% PASS
total/synth/PUSH7/p0 0.00 0.00 -0.0% PASS
total/synth/PUSH7/p1 0.00 0.00 -1.7% PASS
total/synth/PUSH8/p0 0.00 0.00 -2.9% PASS
total/synth/PUSH8/p1 0.00 0.00 -0.2% PASS
total/synth/PUSH9/p0 0.00 0.00 -0.3% PASS
total/synth/PUSH9/p1 0.00 0.00 +2.4% PASS
total/synth/RETURNDATASIZE/a0 0.03 0.03 +0.1% PASS
total/synth/RETURNDATASIZE/a1 0.06 0.06 -1.7% PASS
total/synth/SAR/b0 0.00 0.00 -2.0% PASS
total/synth/SAR/b1 0.00 0.00 +1.0% PASS
total/synth/SGT/b0 0.00 0.00 +0.5% PASS
total/synth/SGT/b1 0.00 0.00 -1.9% PASS
total/synth/SHL/b0 0.00 0.00 +0.9% PASS
total/synth/SHL/b1 0.00 0.00 -2.4% PASS
total/synth/SHR/b0 0.00 0.00 +1.1% PASS
total/synth/SHR/b1 0.00 0.00 -0.4% PASS
total/synth/SIGNEXTEND/b0 0.00 0.00 -1.4% PASS
total/synth/SIGNEXTEND/b1 0.00 0.00 +1.3% PASS
total/synth/SLT/b0 0.00 0.00 -1.6% PASS
total/synth/SLT/b1 0.00 0.00 -1.1% PASS
total/synth/SUB/b0 0.00 0.00 +1.1% PASS
total/synth/SUB/b1 0.00 0.00 +0.1% PASS
total/synth/SWAP1/s0 0.00 0.00 -2.0% PASS
total/synth/SWAP10/s0 0.00 0.00 -1.7% PASS
total/synth/SWAP11/s0 0.00 0.00 +1.7% PASS
total/synth/SWAP12/s0 0.00 0.00 -0.6% PASS
total/synth/SWAP13/s0 0.00 0.00 -1.5% PASS
total/synth/SWAP14/s0 0.00 0.00 +0.9% PASS
total/synth/SWAP15/s0 0.00 0.00 +0.5% PASS
total/synth/SWAP16/s0 0.00 0.00 -2.0% PASS
total/synth/SWAP2/s0 0.00 0.00 -0.3% PASS
total/synth/SWAP3/s0 0.00 0.00 -0.6% PASS
total/synth/SWAP4/s0 0.00 0.00 -1.7% PASS
total/synth/SWAP5/s0 0.00 0.00 +2.3% PASS
total/synth/SWAP6/s0 0.00 0.00 +0.1% PASS
total/synth/SWAP7/s0 0.00 0.00 -1.9% PASS
total/synth/SWAP8/s0 0.00 0.00 -0.0% PASS
total/synth/SWAP9/s0 0.00 0.00 +1.1% PASS
total/synth/XOR/b0 0.00 0.00 -0.6% PASS
total/synth/XOR/b1 0.00 0.00 +3.9% PASS
total/synth/loop_v1 8.33 8.27 -0.8% PASS
total/synth/loop_v2 8.92 8.68 -2.7% PASS

Summary: 194 benchmarks, 0 regressions


ys8888john added a commit to ys8888john/DTVM that referenced this pull request Sep 21, 2026
Parse state files into a temporary host so malformed input fails
cleanly instead of aborting, and commit parsed data atomically. Start
the temporary host from the caller's tx_context so a state file without
tx_context (or with missing fields) keeps the values the caller already
established; fields present in the JSON are overlaid on top.

Treat explicitly loaded empty accounts as empty for EIP-161 instead of
inferring non-emptiness from a non-zero code hash. Pre-warm the Cancun
KZG point evaluation precompile (0x0a) per EIP-4844, keeping the
precompile range revision-aware.

Keep the JIT cached memory base/size in sync after no-expand KECCAK
helpers, including the specialized two-word, caller-slot, and
calldata-slot macro-op paths, so direct memory operations that follow
never read a stale base pointer.

Add regression tests for issues DTVMStack#592, DTVMStack#593, DTVMStack#594, DTVMStack#601, DTVMStack#602, DTVMStack#603,
DTVMStack#606, and DTVMStack#610, plus tx_context preservation/overlay and KECCAK
macro-op coverage in both interpreter and multipass JIT modes.

fix DTVMStack#591, DTVMStack#592, DTVMStack#593, DTVMStack#594, DTVMStack#595, DTVMStack#601, DTVMStack#602, DTVMStack#603, DTVMStack#606

Co-authored-by: DTCoder <noreply@dtcoder.local>
@ys8888john
ys8888john force-pushed the fix/evm-runtime-and-state-issues branch from f2db932 to 41d4651 Compare September 21, 2026 03:08
ys8888john added a commit to ys8888john/DTVM that referenced this pull request Sep 21, 2026
Parse state files into a temporary host so malformed input fails
cleanly instead of aborting, and commit parsed data atomically. Start
the temporary host from the caller's tx_context so a state file without
tx_context (or with missing fields) keeps the values the caller already
established; fields present in the JSON are overlaid on top.

Treat explicitly loaded empty accounts as empty for EIP-161 instead of
inferring non-emptiness from a non-zero code hash. Pre-warm the Cancun
KZG point evaluation precompile (0x0a) per EIP-4844, keeping the
precompile range revision-aware.

Keep the JIT cached memory base/size in sync after no-expand KECCAK
helpers, including the specialized two-word, caller-slot, and
calldata-slot macro-op paths, so direct memory operations that follow
never read a stale base pointer.

Add regression tests for issues DTVMStack#592, DTVMStack#593, DTVMStack#594, DTVMStack#601, DTVMStack#602, DTVMStack#603,
DTVMStack#606, and DTVMStack#610, plus tx_context preservation/overlay and KECCAK
macro-op coverage in both interpreter and multipass JIT modes.

fix DTVMStack#591, DTVMStack#592, DTVMStack#593, DTVMStack#594, DTVMStack#595, DTVMStack#601, DTVMStack#602, DTVMStack#603, DTVMStack#606

Co-authored-by: DTCoder <noreply@dtcoder.local>
@ys8888john
ys8888john force-pushed the fix/evm-runtime-and-state-issues branch from 41d4651 to 6c93d43 Compare September 21, 2026 04:31
ys8888john and others added 4 commits October 8, 2026 17:43
Parse state files into a temporary host so malformed input fails
cleanly instead of aborting, and commit parsed data atomically. Start
the temporary host from the caller's tx_context so a state file without
tx_context (or with missing fields) keeps the values the caller already
established; fields present in the JSON are overlaid on top.

Treat explicitly loaded empty accounts as empty for EIP-161 instead of
inferring non-emptiness from a non-zero code hash. Pre-warm the Cancun
KZG point evaluation precompile (0x0a) per EIP-4844, keeping the
precompile range revision-aware.

Keep the JIT cached memory base/size in sync after no-expand KECCAK
helpers, including the specialized two-word, caller-slot, and
calldata-slot macro-op paths, so direct memory operations that follow
never read a stale base pointer.

Add regression tests for issues DTVMStack#592, DTVMStack#593, DTVMStack#594, DTVMStack#601, DTVMStack#602, DTVMStack#603,
DTVMStack#606, and DTVMStack#610, plus tx_context preservation/overlay and KECCAK
macro-op coverage in both interpreter and multipass JIT modes.

fix DTVMStack#591, DTVMStack#592, DTVMStack#593, DTVMStack#594, DTVMStack#595, DTVMStack#601, DTVMStack#602, DTVMStack#603, DTVMStack#606

Co-authored-by: DTCoder <noreply@dtcoder.local>
Replay the EIP-2930 access list on the caller's host after the atomic
loadState commit. Account warmth lives in the host access journal, so
warming the temporary parsing host discarded access-list entries and
execution charged cold-access gas for warm accounts. Malformed entries
are validated into a temporary list during parsing and applied only
after the parsed state is committed.

Keep the cached memory base pointer/size in sync after the CODECOPY and
CALLDATACOPY no-expand helpers as well. The no-expand helpers run on a
proven range, but the instance memory backing buffer may still be
materialized or rebased on first use, so direct memory operations that
follow must not read a stale base pointer or size. This makes the
reload-after-helper contract uniform across all no-expand helper call
sites whose execution continues (RETURN/REVERT end the frame and are
excluded).

Add regression test AccessListPrewarmSurvivesLoadState covering account
warmth, storage-key warmth, and malformed-entry tolerance in loadState.

Co-authored-by: DTCoder <noreply@dtcoder.local>
The revision-aware EIP-2929 prewarm range stopped at Cancun KZG point
evaluation precompile (0x0a), so on Prague the BLS12-381 precompiles at
0x0b-0x10 stayed cold and the first CALL/STATICCALL to such a precompile
charged cold-access gas at transaction start. Extend the warm precompile
range to 0x10 for EVMC_PRAGUE per EIP-2537 and keep 0x11 and above cold.
Cover the Prague range, the pre-Prague boundary, and the 0x11 boundary
with regression tests.

Co-authored-by: DTCoder <noreply@dtcoder.local>
Pre-warm exactly the Prague BLS precompile range through 0x11 and retain pre-Spurious Dragon existence semantics for previously-created empty accounts.
@ys8888john
ys8888john force-pushed the fix/evm-runtime-and-state-issues branch from 793f85b to 8ca2cd9 Compare October 8, 2026 09:57
Select the host revision on the CLI path so pre-Spurious Dragon empty-account semantics apply. Maintain transaction warmth with an unbounded access set instead of the capped access journal, and reject non-object account entries before RapidJSON member access.
@zoowii
zoowii merged commit e839f6b into DTVMStack:main Oct 8, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants