Skip to content

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

Open
ys8888john wants to merge 3 commits into
DTVMStack:mainfrom
ys8888john:fix/evm-runtime-and-state-issues
Open

ys8888john wants to merge 3 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.44 2.48 +1.8% PASS
total/main/blake2b_huff/empty 0.04 0.04 +1.7% PASS
total/main/blake2b_shifts/8415nulls 14.21 14.11 -0.7% PASS
total/main/sha1_divs/5311 8.11 8.35 +3.0% PASS
total/main/sha1_divs/empty 0.10 0.10 -0.1% PASS
total/main/sha1_shifts/5311 5.65 5.62 -0.5% PASS
total/main/sha1_shifts/empty 0.04 0.04 -0.5% PASS
total/main/snailtracer/benchmark 88.19 93.76 +6.3% PASS
total/main/structarray_alloc/nfts_rank 1.13 1.13 +0.2% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 -3.4% PASS
total/main/swap_math/received 0.01 0.01 -0.2% PASS
total/main/swap_math/spent 0.01 0.01 +2.9% PASS
total/main/weierstrudel/1 0.31 0.31 +2.8% PASS
total/main/weierstrudel/15 3.41 3.46 +1.5% PASS
total/micro/JUMPDEST_n0/empty 2.78 2.78 -0.1% PASS
total/micro/jump_around/empty 0.12 0.12 -0.7% PASS
total/micro/loop_with_many_jumpdests/empty 70.57 70.52 -0.1% PASS
total/micro/memory_grow_mload/by1 0.17 0.17 +1.5% PASS
total/micro/memory_grow_mload/by16 0.19 0.19 +1.5% PASS
total/micro/memory_grow_mload/by32 0.11 0.12 +1.2% PASS
total/micro/memory_grow_mload/nogrow 0.09 0.10 +0.6% PASS
total/micro/memory_grow_mstore/by1 0.19 0.19 +0.1% PASS
total/micro/memory_grow_mstore/by16 0.11 0.11 +0.2% PASS
total/micro/memory_grow_mstore/by32 0.23 0.22 -3.7% PASS
total/micro/memory_grow_mstore/nogrow 0.18 0.18 +0.6% PASS
total/micro/signextend/one 0.26 0.26 +0.4% PASS
total/micro/signextend/zero 0.48 0.47 -0.8% PASS
total/synth/ADD/b0 2.01 2.02 +0.1% PASS
total/synth/ADD/b1 2.78 2.77 -0.4% PASS
total/synth/ADDRESS/a0 6.59 6.65 +1.0% PASS
total/synth/ADDRESS/a1 5.15 5.29 +2.7% PASS
total/synth/AND/b0 2.11 2.04 -3.5% PASS
total/synth/AND/b1 2.24 2.26 +0.8% PASS
total/synth/BYTE/b0 6.15 6.14 -0.0% PASS
total/synth/BYTE/b1 8.16 8.54 +4.8% PASS
total/synth/CALLDATASIZE/a0 5.59 5.54 -0.9% PASS
total/synth/CALLDATASIZE/a1 3.49 3.51 +0.5% PASS
total/synth/CALLER/a0 6.10 6.08 -0.3% PASS
total/synth/CALLER/a1 6.43 6.66 +3.6% PASS
total/synth/CALLVALUE/a0 3.62 3.60 -0.3% PASS
total/synth/CALLVALUE/a1 6.44 6.22 -3.5% PASS
total/synth/CODESIZE/a0 6.47 6.50 +0.4% PASS
total/synth/CODESIZE/a1 6.79 6.77 -0.3% PASS
total/synth/DUP1/d0 5.06 5.87 +16.0% PASS
total/synth/DUP1/d1 2.14 2.18 +2.0% PASS
total/synth/DUP10/d0 5.75 5.68 -1.2% PASS
total/synth/DUP10/d1 2.27 2.21 -2.3% PASS
total/synth/DUP11/d0 1.42 2.40 +69.5% PASS
total/synth/DUP11/d1 2.29 2.10 -8.3% PASS
total/synth/DUP12/d0 2.40 5.90 +145.7% PASS
total/synth/DUP12/d1 1.41 1.40 -0.5% PASS
total/synth/DUP13/d0 1.99 5.34 +169.0% PASS
total/synth/DUP13/d1 2.16 2.20 +1.6% PASS
total/synth/DUP14/d0 3.50 3.50 -0.1% PASS
total/synth/DUP14/d1 2.03 2.15 +5.9% PASS
total/synth/DUP15/d0 5.68 2.12 -62.7% PASS
total/synth/DUP15/d1 1.41 1.40 -0.5% PASS
total/synth/DUP16/d0 5.82 5.84 +0.3% PASS
total/synth/DUP16/d1 2.12 2.38 +12.1% PASS
total/synth/DUP2/d0 1.40 1.43 +2.5% PASS
total/synth/DUP2/d1 2.22 2.26 +2.1% PASS
total/synth/DUP3/d0 3.51 2.08 -38.6% PASS
total/synth/DUP3/d1 1.40 1.40 +0.2% PASS
total/synth/DUP4/d0 5.86 5.86 -0.1% PASS
total/synth/DUP4/d1 2.05 2.15 +4.6% PASS
total/synth/DUP5/d0 3.41 3.42 +0.3% PASS
total/synth/DUP5/d1 2.26 2.08 -8.1% PASS
total/synth/DUP6/d0 2.59 5.82 +124.3% PASS
total/synth/DUP6/d1 1.23 1.41 +14.9% PASS
total/synth/DUP7/d0 2.13 5.76 +170.3% PASS
total/synth/DUP7/d1 1.95 2.08 +6.5% PASS
total/synth/DUP8/d0 1.43 3.47 +142.8% PASS
total/synth/DUP8/d1 2.38 2.04 -14.4% PASS
total/synth/DUP9/d0 2.10 5.70 +171.0% PASS
total/synth/DUP9/d1 1.40 1.40 +0.0% PASS
total/synth/EQ/b0 4.45 4.49 +1.1% PASS
total/synth/EQ/b1 4.89 4.92 +1.0% PASS
total/synth/GAS/a0 4.10 3.94 -3.9% PASS
total/synth/GAS/a1 7.45 7.48 +0.4% PASS
total/synth/GT/b0 4.82 4.80 -0.3% PASS
total/synth/GT/b1 5.02 4.96 -1.2% PASS
total/synth/ISZERO/u0 7.07 7.04 -0.4% PASS
total/synth/JUMPDEST/n0 2.81 2.78 -1.2% PASS
total/synth/LT/b0 4.80 4.80 -0.1% PASS
total/synth/LT/b1 4.33 4.27 -1.5% PASS
total/synth/MSIZE/a0 5.45 5.47 +0.3% PASS
total/synth/MSIZE/a1 5.75 5.83 +1.4% PASS
total/synth/MUL/b0 7.24 5.40 -25.5% PASS
total/synth/MUL/b1 5.26 5.29 +0.6% PASS
total/synth/NOT/u0 2.22 2.25 +1.1% PASS
total/synth/OR/b0 2.87 2.87 +0.2% PASS
total/synth/OR/b1 1.78 1.82 +2.3% PASS
total/synth/PC/a0 5.70 5.55 -2.6% PASS
total/synth/PC/a1 3.43 3.51 +2.2% PASS
total/synth/PUSH1/p0 2.05 2.02 -1.5% PASS
total/synth/PUSH1/p1 1.77 1.75 -1.3% PASS
total/synth/PUSH10/p0 2.00 2.05 +2.5% PASS
total/synth/PUSH10/p1 1.77 1.75 -1.4% PASS
total/synth/PUSH11/p0 1.92 2.11 +10.3% PASS
total/synth/PUSH11/p1 2.34 2.34 -0.0% PASS
total/synth/PUSH12/p0 1.27 1.22 -3.9% PASS
total/synth/PUSH12/p1 2.31 2.35 +2.1% PASS
total/synth/PUSH13/p0 2.02 2.04 +1.0% PASS
total/synth/PUSH13/p1 1.79 1.75 -2.3% PASS
total/synth/PUSH14/p0 1.96 2.07 +5.5% PASS
total/synth/PUSH14/p1 2.33 2.44 +4.7% PASS
total/synth/PUSH15/p0 1.23 1.22 -1.2% PASS
total/synth/PUSH15/p1 2.51 2.67 +6.5% PASS
total/synth/PUSH16/p0 1.92 2.27 +18.2% PASS
total/synth/PUSH16/p1 1.77 1.75 -1.2% PASS
total/synth/PUSH17/p0 1.93 2.18 +12.7% PASS
total/synth/PUSH17/p1 2.41 2.29 -4.9% PASS
total/synth/PUSH18/p0 1.33 1.23 -7.4% PASS
total/synth/PUSH18/p1 2.44 2.31 -5.3% PASS
total/synth/PUSH19/p0 1.97 2.07 +4.9% PASS
total/synth/PUSH19/p1 1.77 1.76 -0.8% PASS
total/synth/PUSH2/p0 2.02 2.37 +17.1% PASS
total/synth/PUSH2/p1 2.33 2.53 +8.6% PASS
total/synth/PUSH20/p0 1.98 2.04 +3.0% PASS
total/synth/PUSH20/p1 2.56 2.29 -10.2% PASS
total/synth/PUSH21/p0 1.32 1.32 +0.0% PASS
total/synth/PUSH21/p1 2.53 2.35 -7.2% PASS
total/synth/PUSH22/p0 1.91 1.95 +1.9% PASS
total/synth/PUSH22/p1 1.79 1.75 -2.5% PASS
total/synth/PUSH23/p0 1.98 2.02 +2.4% PASS
total/synth/PUSH23/p1 2.46 2.55 +3.8% PASS
total/synth/PUSH24/p0 1.32 1.32 +0.2% PASS
total/synth/PUSH24/p1 2.30 2.36 +2.7% PASS
total/synth/PUSH25/p0 1.95 1.94 -0.7% PASS
total/synth/PUSH25/p1 1.75 1.79 +2.0% PASS
total/synth/PUSH26/p0 2.05 1.97 -3.6% PASS
total/synth/PUSH26/p1 2.40 2.39 -0.5% PASS
total/synth/PUSH27/p0 1.23 1.30 +5.6% PASS
total/synth/PUSH27/p1 2.47 2.48 +0.1% PASS
total/synth/PUSH28/p0 2.05 2.02 -1.4% PASS
total/synth/PUSH28/p1 1.80 1.79 -0.5% PASS
total/synth/PUSH29/p0 1.95 2.10 +7.2% PASS
total/synth/PUSH29/p1 2.43 2.44 +0.4% PASS
total/synth/PUSH3/p0 1.32 1.31 -0.4% PASS
total/synth/PUSH3/p1 2.50 2.56 +2.1% PASS
total/synth/PUSH30/p0 1.37 1.34 -2.2% PASS
total/synth/PUSH30/p1 2.68 2.43 -9.5% PASS
total/synth/PUSH31/p0 2.05 1.93 -5.4% PASS
total/synth/PUSH31/p1 1.87 1.84 -2.0% PASS
total/synth/PUSH32/p0 2.43 1.96 -19.5% PASS
total/synth/PUSH32/p1 2.43 2.38 -2.0% PASS
total/synth/PUSH4/p0 1.94 1.92 -1.1% PASS
total/synth/PUSH4/p1 1.75 1.76 +0.4% PASS
total/synth/PUSH5/p0 1.94 2.08 +7.0% PASS
total/synth/PUSH5/p1 2.35 2.51 +7.0% PASS
total/synth/PUSH6/p0 1.31 1.32 +0.2% PASS
total/synth/PUSH6/p1 2.30 2.25 -2.1% PASS
total/synth/PUSH7/p0 1.95 1.91 -2.3% PASS
total/synth/PUSH7/p1 1.74 1.78 +2.1% PASS
total/synth/PUSH8/p0 2.35 2.04 -12.3% PASS
total/synth/PUSH8/p1 2.50 2.41 -3.4% PASS
total/synth/PUSH9/p0 1.32 1.32 -0.1% PASS
total/synth/PUSH9/p1 2.31 2.55 +10.4% PASS
total/synth/RETURNDATASIZE/a0 3.47 3.44 -0.8% PASS
total/synth/RETURNDATASIZE/a1 6.34 6.26 -1.2% PASS
total/synth/SAR/b0 3.95 3.95 +0.0% PASS
total/synth/SAR/b1 7.45 7.39 -0.9% PASS
total/synth/SGT/b0 3.64 3.61 -0.8% PASS
total/synth/SGT/b1 3.36 3.29 -2.1% PASS
total/synth/SHL/b0 3.58 3.65 +1.9% PASS
total/synth/SHL/b1 1.82 1.86 +2.5% PASS
total/synth/SHR/b0 3.76 3.76 +0.1% PASS
total/synth/SHR/b1 3.21 3.16 -1.6% PASS
total/synth/SIGNEXTEND/b0 3.53 3.43 -2.7% PASS
total/synth/SIGNEXTEND/b1 6.65 6.64 -0.2% PASS
total/synth/SLT/b0 3.43 3.43 -0.0% PASS
total/synth/SLT/b1 3.79 3.73 -1.4% PASS
total/synth/SUB/b0 2.60 2.60 +0.2% PASS
total/synth/SUB/b1 2.71 2.70 -0.3% PASS
total/synth/SWAP1/s0 2.00 1.97 -1.2% PASS
total/synth/SWAP10/s0 1.99 1.99 +0.1% PASS
total/synth/SWAP11/s0 4.00 3.86 -3.4% PASS
total/synth/SWAP12/s0 3.84 3.83 -0.3% PASS
total/synth/SWAP13/s0 2.04 2.00 -2.1% PASS
total/synth/SWAP14/s0 3.88 3.88 -0.0% PASS
total/synth/SWAP15/s0 4.29 3.86 -10.0% PASS
total/synth/SWAP16/s0 2.00 1.99 -0.2% PASS
total/synth/SWAP2/s0 3.81 3.86 +1.4% PASS
total/synth/SWAP3/s0 3.85 3.84 -0.4% PASS
total/synth/SWAP4/s0 2.00 1.98 -1.4% PASS
total/synth/SWAP5/s0 3.90 3.82 -2.1% PASS
total/synth/SWAP6/s0 3.86 3.84 -0.7% PASS
total/synth/SWAP7/s0 2.00 1.98 -1.0% PASS
total/synth/SWAP8/s0 3.85 3.85 -0.1% PASS
total/synth/SWAP9/s0 4.00 3.89 -2.7% PASS
total/synth/XOR/b0 2.09 2.01 -3.5% PASS
total/synth/XOR/b1 2.29 2.12 -7.5% PASS
total/synth/loop_v1 8.53 8.53 -0.1% PASS
total/synth/loop_v2 8.71 8.90 +2.3% 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.34 1.39 +4.2% PASS
total/main/blake2b_huff/empty 0.02 0.02 -3.9% PASS
total/main/blake2b_shifts/8415nulls 4.34 4.26 -1.8% PASS
total/main/sha1_divs/5311 0.89 0.88 -1.0% PASS
total/main/sha1_divs/empty 0.01 0.01 -0.3% PASS
total/main/sha1_shifts/5311 0.73 0.78 +6.2% PASS
total/main/sha1_shifts/empty 0.01 0.01 +0.1% PASS
total/main/snailtracer/benchmark 47.99 48.97 +2.0% PASS
total/main/structarray_alloc/nfts_rank 0.27 0.27 -1.5% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 -0.8% PASS
total/main/swap_math/received 0.01 0.01 -1.8% PASS
total/main/swap_math/spent 0.00 0.01 +2.8% PASS
total/main/weierstrudel/1 0.33 0.33 +1.2% PASS
total/main/weierstrudel/15 3.67 3.68 +0.4% PASS
total/micro/JUMPDEST_n0/empty 0.00 0.00 -0.1% PASS
total/micro/jump_around/empty 0.08 0.07 -4.3% PASS
total/micro/loop_with_many_jumpdests/empty 0.01 0.01 -1.4% PASS
total/micro/memory_grow_mload/by1 0.02 0.02 +3.9% PASS
total/micro/memory_grow_mload/by16 0.02 0.02 +6.4% PASS
total/micro/memory_grow_mload/by32 0.01 0.01 +2.5% PASS
total/micro/memory_grow_mload/nogrow 0.01 0.01 +1.1% PASS
total/micro/memory_grow_mstore/by1 0.03 0.02 -30.1% PASS
total/micro/memory_grow_mstore/by16 0.01 0.01 -0.7% PASS
total/micro/memory_grow_mstore/by32 0.03 0.03 +2.7% PASS
total/micro/memory_grow_mstore/nogrow 0.02 0.02 +2.3% PASS
total/micro/signextend/one 0.08 0.08 -0.7% PASS
total/micro/signextend/zero 0.19 0.19 +1.1% 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.26 0.22 -14.3% PASS
total/synth/ADDRESS/a1 0.15 0.15 +0.0% PASS
total/synth/AND/b0 0.00 0.00 -0.7% PASS
total/synth/AND/b1 0.00 0.00 -1.1% PASS
total/synth/BYTE/b0 0.00 0.00 -0.7% PASS
total/synth/BYTE/b1 0.00 0.00 -0.1% PASS
total/synth/CALLDATASIZE/a0 0.12 0.12 +0.7% PASS
total/synth/CALLDATASIZE/a1 0.07 0.07 +0.2% PASS
total/synth/CALLER/a0 0.23 0.22 -1.4% PASS
total/synth/CALLER/a1 0.23 0.23 +1.3% PASS
total/synth/CALLVALUE/a0 0.19 0.19 -0.6% PASS
total/synth/CALLVALUE/a1 0.28 0.33 +16.4% PASS
total/synth/CODESIZE/a0 0.13 0.12 -8.1% PASS
total/synth/CODESIZE/a1 0.12 0.12 -0.7% PASS
total/synth/DUP1/d0 0.00 0.00 -1.7% PASS
total/synth/DUP1/d1 0.00 0.00 -0.6% PASS
total/synth/DUP10/d0 0.00 0.00 -0.1% PASS
total/synth/DUP10/d1 0.00 0.00 -0.0% PASS
total/synth/DUP11/d0 0.00 0.00 -0.5% PASS
total/synth/DUP11/d1 0.00 0.00 -1.0% PASS
total/synth/DUP12/d0 0.00 0.00 -0.9% PASS
total/synth/DUP12/d1 0.00 0.00 -0.2% PASS
total/synth/DUP13/d0 0.00 0.00 +0.1% PASS
total/synth/DUP13/d1 0.00 0.00 -1.1% PASS
total/synth/DUP14/d0 0.00 0.00 -2.2% PASS
total/synth/DUP14/d1 0.00 0.00 -0.2% PASS
total/synth/DUP15/d0 0.00 0.00 +0.5% PASS
total/synth/DUP15/d1 0.00 0.00 -0.4% PASS
total/synth/DUP16/d0 0.00 0.00 -0.8% PASS
total/synth/DUP16/d1 0.00 0.00 +1.1% PASS
total/synth/DUP2/d0 0.00 0.00 -1.0% PASS
total/synth/DUP2/d1 0.00 0.00 -1.8% PASS
total/synth/DUP3/d0 0.00 0.00 -0.1% PASS
total/synth/DUP3/d1 0.00 0.00 -0.6% PASS
total/synth/DUP4/d0 0.00 0.00 -1.4% PASS
total/synth/DUP4/d1 0.00 0.00 -0.2% PASS
total/synth/DUP5/d0 0.00 0.00 -0.4% PASS
total/synth/DUP5/d1 0.00 0.00 -1.4% PASS
total/synth/DUP6/d0 0.00 0.00 -0.0% PASS
total/synth/DUP6/d1 0.00 0.00 -0.6% PASS
total/synth/DUP7/d0 0.00 0.00 -0.7% PASS
total/synth/DUP7/d1 0.00 0.00 -0.4% PASS
total/synth/DUP8/d0 0.00 0.00 -0.6% PASS
total/synth/DUP8/d1 0.00 0.00 -0.7% PASS
total/synth/DUP9/d0 0.00 0.00 -0.1% PASS
total/synth/DUP9/d1 0.00 0.00 +0.2% PASS
total/synth/EQ/b0 0.00 0.00 -2.4% PASS
total/synth/EQ/b1 0.00 0.00 -0.0% PASS
total/synth/GAS/a0 0.76 0.76 -0.0% PASS
total/synth/GAS/a1 0.92 0.92 -0.0% PASS
total/synth/GT/b0 0.00 0.00 -0.1% PASS
total/synth/GT/b1 0.00 0.00 +0.8% PASS
total/synth/ISZERO/u0 0.00 0.00 -0.6% PASS
total/synth/JUMPDEST/n0 0.00 0.00 -0.4% PASS
total/synth/LT/b0 0.00 0.00 +2.7% PASS
total/synth/LT/b1 0.00 0.00 +1.1% PASS
total/synth/MSIZE/a0 0.00 0.00 +0.0% PASS
total/synth/MSIZE/a1 0.00 0.00 +0.6% PASS
total/synth/MUL/b0 0.00 0.00 +0.7% PASS
total/synth/MUL/b1 0.00 0.00 -0.1% PASS
total/synth/NOT/u0 0.00 0.00 -0.5% PASS
total/synth/OR/b0 0.00 0.00 +0.1% PASS
total/synth/OR/b1 0.00 0.00 -0.4% PASS
total/synth/PC/a0 0.00 0.00 +0.1% PASS
total/synth/PC/a1 0.00 0.00 -0.2% PASS
total/synth/PUSH1/p0 0.00 0.00 +0.2% PASS
total/synth/PUSH1/p1 0.00 0.00 -0.2% PASS
total/synth/PUSH10/p0 0.00 0.00 -1.5% PASS
total/synth/PUSH10/p1 0.00 0.00 +1.5% PASS
total/synth/PUSH11/p0 0.00 0.00 +2.1% PASS
total/synth/PUSH11/p1 0.00 0.00 +1.3% PASS
total/synth/PUSH12/p0 0.00 0.00 -0.6% PASS
total/synth/PUSH12/p1 0.00 0.00 -4.9% PASS
total/synth/PUSH13/p0 0.00 0.00 -6.8% PASS
total/synth/PUSH13/p1 0.00 0.00 -1.7% PASS
total/synth/PUSH14/p0 0.00 0.00 +4.7% PASS
total/synth/PUSH14/p1 0.00 0.00 +0.7% PASS
total/synth/PUSH15/p0 0.00 0.00 -1.8% PASS
total/synth/PUSH15/p1 0.00 0.00 +1.3% PASS
total/synth/PUSH16/p0 0.00 0.00 +2.7% PASS
total/synth/PUSH16/p1 0.00 0.00 -0.5% PASS
total/synth/PUSH17/p0 0.00 0.00 +4.4% PASS
total/synth/PUSH17/p1 0.00 0.00 +2.7% PASS
total/synth/PUSH18/p0 0.00 0.00 -1.3% PASS
total/synth/PUSH18/p1 0.00 0.00 -3.7% PASS
total/synth/PUSH19/p0 0.00 0.00 +0.9% PASS
total/synth/PUSH19/p1 0.00 0.00 -1.5% PASS
total/synth/PUSH2/p0 0.00 0.00 -0.2% PASS
total/synth/PUSH2/p1 0.00 0.00 -2.8% PASS
total/synth/PUSH20/p0 0.00 0.00 -0.3% PASS
total/synth/PUSH20/p1 0.00 0.00 +2.0% PASS
total/synth/PUSH21/p0 0.00 0.00 -1.4% PASS
total/synth/PUSH21/p1 0.00 0.00 -0.1% PASS
total/synth/PUSH22/p0 1.91 1.94 +1.4% PASS
total/synth/PUSH22/p1 1.81 1.78 -1.8% PASS
total/synth/PUSH23/p0 1.96 1.89 -3.3% PASS
total/synth/PUSH23/p1 2.37 2.22 -6.3% PASS
total/synth/PUSH24/p0 1.32 1.31 -0.4% PASS
total/synth/PUSH24/p1 2.22 2.24 +1.0% PASS
total/synth/PUSH25/p0 1.88 1.87 -0.5% PASS
total/synth/PUSH25/p1 1.81 1.76 -3.2% PASS
total/synth/PUSH26/p0 1.91 1.89 -1.3% PASS
total/synth/PUSH26/p1 2.31 2.22 -3.9% PASS
total/synth/PUSH27/p0 1.34 1.32 -1.8% PASS
total/synth/PUSH27/p1 2.22 2.25 +1.4% PASS
total/synth/PUSH28/p0 1.89 1.89 +0.1% PASS
total/synth/PUSH28/p1 1.81 1.79 -1.2% PASS
total/synth/PUSH29/p0 1.88 1.95 +3.3% PASS
total/synth/PUSH29/p1 2.25 2.18 -3.0% PASS
total/synth/PUSH3/p0 0.00 0.00 -2.4% PASS
total/synth/PUSH3/p1 0.00 0.00 +0.2% PASS
total/synth/PUSH30/p0 1.36 1.33 -2.8% PASS
total/synth/PUSH30/p1 2.29 2.26 -1.5% PASS
total/synth/PUSH31/p0 1.89 1.87 -1.3% PASS
total/synth/PUSH31/p1 1.94 1.83 -5.7% PASS
total/synth/PUSH32/p0 1.90 1.88 -0.6% PASS
total/synth/PUSH32/p1 2.30 2.20 -4.5% PASS
total/synth/PUSH4/p0 0.00 0.00 +1.8% PASS
total/synth/PUSH4/p1 0.00 0.00 -2.2% PASS
total/synth/PUSH5/p0 0.00 0.00 +3.0% PASS
total/synth/PUSH5/p1 0.00 0.00 +2.2% PASS
total/synth/PUSH6/p0 0.00 0.00 +0.8% PASS
total/synth/PUSH6/p1 0.00 0.00 -1.0% PASS
total/synth/PUSH7/p0 0.00 0.00 -1.8% PASS
total/synth/PUSH7/p1 0.00 0.00 -0.6% PASS
total/synth/PUSH8/p0 0.00 0.00 +0.4% PASS
total/synth/PUSH8/p1 0.00 0.00 +0.3% PASS
total/synth/PUSH9/p0 0.00 0.00 -2.2% PASS
total/synth/PUSH9/p1 0.00 0.00 -2.1% PASS
total/synth/RETURNDATASIZE/a0 0.03 0.03 -3.9% PASS
total/synth/RETURNDATASIZE/a1 0.06 0.06 +2.9% PASS
total/synth/SAR/b0 0.00 0.00 -0.5% PASS
total/synth/SAR/b1 0.00 0.00 -0.0% PASS
total/synth/SGT/b0 0.00 0.00 -0.5% PASS
total/synth/SGT/b1 0.00 0.00 -0.8% PASS
total/synth/SHL/b0 0.00 0.00 +0.2% PASS
total/synth/SHL/b1 0.00 0.00 -0.5% PASS
total/synth/SHR/b0 0.00 0.00 +2.6% PASS
total/synth/SHR/b1 0.00 0.00 +1.4% PASS
total/synth/SIGNEXTEND/b0 0.00 0.00 -0.3% PASS
total/synth/SIGNEXTEND/b1 0.00 0.00 +0.6% PASS
total/synth/SLT/b0 0.00 0.00 -0.7% PASS
total/synth/SLT/b1 0.00 0.00 -0.1% PASS
total/synth/SUB/b0 0.00 0.00 -0.9% PASS
total/synth/SUB/b1 0.00 0.00 +1.1% PASS
total/synth/SWAP1/s0 0.00 0.00 -0.6% PASS
total/synth/SWAP10/s0 0.00 0.00 -1.1% PASS
total/synth/SWAP11/s0 0.00 0.00 -0.3% PASS
total/synth/SWAP12/s0 0.00 0.00 +6.4% PASS
total/synth/SWAP13/s0 0.00 0.00 -0.9% PASS
total/synth/SWAP14/s0 0.00 0.00 -0.2% PASS
total/synth/SWAP15/s0 0.00 0.00 -0.8% PASS
total/synth/SWAP16/s0 0.00 0.00 -0.2% PASS
total/synth/SWAP2/s0 0.00 0.00 -1.2% PASS
total/synth/SWAP3/s0 0.00 0.00 -1.6% PASS
total/synth/SWAP4/s0 0.00 0.00 -0.9% PASS
total/synth/SWAP5/s0 0.00 0.00 -0.2% PASS
total/synth/SWAP6/s0 0.00 0.00 +2.9% PASS
total/synth/SWAP7/s0 0.00 0.00 -0.4% PASS
total/synth/SWAP8/s0 0.00 0.00 -0.9% PASS
total/synth/SWAP9/s0 0.00 0.00 +1.5% PASS
total/synth/XOR/b0 0.00 0.00 -0.3% PASS
total/synth/XOR/b1 0.00 0.00 +0.5% PASS
total/synth/loop_v1 8.58 8.50 -1.0% PASS
total/synth/loop_v2 8.66 8.81 +1.8% 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
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 2 commits September 28, 2026 17:34
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant