Skip to content

perf: inline MLOAD/MSTORE#342

Merged
DaniPopes merged 36 commits intomainfrom
dani/compiler-improvements
Apr 29, 2026
Merged

perf: inline MLOAD/MSTORE#342
DaniPopes merged 36 commits intomainfrom
dani/compiler-improvements

Conversation

@DaniPopes
Copy link
Copy Markdown
Collaborator

@DaniPopes DaniPopes commented Apr 25, 2026

This inlines memory operations in the compiler so MLOAD/MSTORE paths can stay in generated code instead of going through builtins. The change increases generated code size, but removes runtime builtin calls and exposes more memory operations to LLVM.

Benchmarks

Headline numbers vs origin/main across all benchmarks discovered by ./scripts/bench.py (21 built-ins plus 9 tmp/mainnet contracts): jit size +20.1%, total compile time +41.5%, and codegen +44.7%. The extra compile-time/code-size cost is expected from inlining memory handling into generated code; the tradeoff is intended to improve runtime hot-path locality.

Codegen statistics

benchmark unopt.ll opt.ll opt.s jit size i256 loads i256 stores spills reloads
fibonacci-calldata +4.2% 🔴 +12.4% 🔴 -1.0% 🟢 -6.8% 🟢 = -33.3% 🟢 = -16.7% 🟢
factorial +4.3% 🔴 +12.2% 🔴 -1.7% 🟢 -9.2% 🟢 = -33.3% 🟢 -37.5% 🟢 -33.3% 🟢
counter +5.2% 🔴 +13.1% 🔴 +9.8% 🔴 +17.5% 🔴 +12.5% 🔴 +28.6% 🔴 - -
snailtracer +13.0% 🔴 +34.7% 🔴 +22.8% 🔴 +21.3% 🔴 +11.7% 🔴 -3.3% 🟢 +229.2% 🔴 +390.9% 🔴
weth +10.3% 🔴 +35.2% 🔴 +21.4% 🔴 +20.2% 🔴 +4.7% 🔴 +6.8% 🔴 +115.2% 🔴 +99.1% 🔴
hash_10k +12.6% 🔴 +39.2% 🔴 +33.4% 🔴 +49.8% 🔴 +18.8% 🔴 -4.3% 🟢 - -
erc20_transfer +9.5% 🔴 +27.5% 🔴 +17.5% 🔴 +17.3% 🔴 +0.3% 🔴 +3.4% 🔴 +107.1% 🔴 +137.8% 🔴
usdc_proxy +6.1% 🔴 +18.3% 🔴 +11.2% 🔴 +6.8% 🔴 = = +25.0% 🔴 +39.1% 🔴
fiat_token +9.7% 🔴 +33.5% 🔴 +20.7% 🔴 +14.1% 🔴 +1.7% 🔴 -0.5% 🟢 +64.2% 🔴 +57.8% 🔴
uniswap_v2_pair +10.0% 🔴 +33.5% 🔴 +25.0% 🔴 +22.4% 🔴 +4.6% 🔴 +2.4% 🔴 +115.0% 🔴 +70.0% 🔴
univ2_router +8.9% 🔴 +31.0% 🔴 +18.2% 🔴 +9.6% 🔴 +3.8% 🔴 -3.0% 🟢 +49.3% 🔴 +122.5% 🔴
seaport +12.5% 🔴 +33.5% 🔴 +26.3% 🔴 +22.9% 🔴 +8.4% 🔴 -3.1% 🟢 +150.3% 🔴 +114.1% 🔴
airdrop +9.0% 🔴 +29.6% 🔴 +16.1% 🔴 +19.8% 🔴 +2.9% 🔴 +3.2% 🔴 +82.5% 🔴 +17.1% 🔴
bswap64 +15.2% 🔴 +45.4% 🔴 +9.9% 🔴 +30.9% 🔴 = -35.8% 🟢 - -
bswap64_opt +8.9% 🔴 +29.0% 🔴 +20.7% 🔴 +26.7% 🔴 +3.0% 🔴 +5.9% 🔴 - -
eip4788 +3.2% 🔴 +8.5% 🔴 +3.2% 🔴 +8.5% 🔴 +12.5% 🔴 +11.1% 🔴 = =
eip2935 +3.5% 🔴 +9.7% 🔴 +3.5% 🔴 +9.2% 🔴 +16.7% 🔴 +20.0% 🔴 - -
curve_stableswap +6.4% 🔴 +17.2% 🔴 +12.6% 🔴 +13.4% 🔴 +1.3% 🔴 +2.5% 🔴 +276.0% 🔴 +96.2% 🔴
onchain_lm_v2 +4.9% 🔴 +14.7% 🔴 +15.8% 🔴 +11.4% 🔴 +1.2% 🔴 -2.2% 🟢 +273.1% 🔴 +324.2% 🔴
burntpix +10.5% 🔴 +31.6% 🔴 +20.2% 🔴 +17.7% 🔴 +8.4% 🔴 -0.9% 🟢 +162.3% 🔴 +80.0% 🔴
0x184e2e0d92… +12.2% 🔴 +39.7% 🔴 +30.3% 🔴 +31.9% 🔴 +5.2% 🔴 +8.0% 🔴 +261.4% 🔴 +20.1% 🔴
0x26f3fa5857… +12.5% 🔴 +49.7% 🔴 +29.5% 🔴 +18.7% 🔴 +6.7% 🔴 -4.8% 🟢 +43.3% 🔴 +34.2% 🔴
0x7497bfab49… +12.3% 🔴 +48.8% 🔴 +30.0% 🔴 +19.1% 🔴 +6.4% 🔴 -4.9% 🟢 +44.2% 🔴 +42.0% 🔴
0x8819f74c38… +11.4% 🔴 +43.4% 🔴 +27.0% 🔴 +20.0% 🔴 +5.8% 🔴 -3.9% 🟢 +73.1% 🔴 +3.1% 🔴
0x9806ed1505… +8.8% 🔴 +29.9% 🔴 +18.6% 🔴 +11.0% 🔴 +3.5% 🔴 +1.2% 🔴 +80.3% 🔴 +91.5% 🔴
0xcc74d4c66f… +11.4% 🔴 +37.7% 🔴 +27.2% 🔴 +25.2% 🔴 +3.8% 🔴 -1.5% 🟢 +131.6% 🔴 +36.7% 🔴
0xd450e90507… +13.9% 🔴 +50.6% 🔴 +33.3% 🔴 +28.3% 🔴 +3.7% 🔴 -2.4% 🟢 +300.7% 🔴 -12.9% 🟢
0xfbbee2ff80… +11.5% 🔴 +37.9% 🔴 +26.9% 🔴 +25.4% 🔴 +3.9% 🔴 -1.5% 🟢 +143.6% 🔴 +48.2% 🔴
0xfc5900eac5… +8.3% 🔴 +29.7% 🔴 +18.1% 🔴 +13.6% 🔴 +4.9% 🔴 +2.2% 🔴 +123.1% 🔴 +52.3% 🔴
TOTAL +10.9% 🔴 +36.3% 🔴 +24.4% 🔴 +20.1% 🔴 +5.5% 🔴 -1.3% 🟢 +118.5% 🔴 +62.3% 🔴
Full details
benchmark unopt.ll opt.ll opt.s jit size i256 loads i256 stores spills reloads
fibonacci-calldata 356
371
+4.2% 🔴
113
127
+12.4% 🔴
306
303
-1.0% 🟢
444 B
414 B
-6.8% 🟢
2
2
=
3
2
-33.3% 🟢
5
5
=
6
5
-16.7% 🟢
factorial 348
363
+4.3% 🔴
115
129
+12.2% 🔴
348
342
-1.7% 🟢
601 B
546 B
-9.2% 🟢
2
2
=
3
2
-33.3% 🟢
8
5
-37.5% 🟢
9
6
-33.3% 🟢
counter 1018
1071
+5.2% 🔴
343
388
+13.1% 🔴
541
594
+9.8% 🔴
876 B
1.0 KiB
+17.5% 🔴
8
9
+12.5% 🔴
7
9
+28.6% 🔴
0
0
-
0
0
-
snailtracer 54487
61587
+13.0% 🔴
20614
27765
+34.7% 🔴
41289
50707
+22.8% 🔴
114.6 KiB
139.0 KiB
+21.3% 🔴
1379
1540
+11.7% 🔴
2245
2172
-3.3% 🟢
96
316
+229.2% 🔴
528
2592
+390.9% 🔴
weth 12758
14076
+10.3% 🔴
3745
5065
+35.2% 🔴
6367
7730
+21.4% 🔴
20.4 KiB
24.5 KiB
+20.2% 🔴
256
268
+4.7% 🔴
340
363
+6.8% 🔴
33
71
+115.2% 🔴
108
215
+99.1% 🔴
hash_10k 968
1090
+12.6% 🔴
309
430
+39.2% 🔴
557
743
+33.4% 🔴
1.4 KiB
2.0 KiB
+49.8% 🔴
16
19
+18.8% 🔴
23
22
-4.3% 🟢
0
1
-
0
12
-
erc20_transfer 13888
15213
+9.5% 🔴
4890
6235
+27.5% 🔴
9826
11545
+17.5% 🔴
25.7 KiB
30.1 KiB
+17.3% 🔴
308
309
+0.3% 🔴
441
456
+3.4% 🔴
14
29
+107.1% 🔴
82
195
+137.8% 🔴
push0_proxy 371
371
=
183
183
=
339
339
=
633 B
633 B
=
1
1
=
15
15
=
0
0
-
0
0
-
usdc_proxy 7162
7602
+6.1% 🔴
2597
3071
+18.3% 🔴
4733
5263
+11.2% 🔴
11.7 KiB
12.5 KiB
+6.8% 🔴
105
105
=
196
196
=
24
30
+25.0% 🔴
23
32
+39.1% 🔴
fiat_token 77617
85132
+9.7% 🔴
24091
32151
+33.5% 🔴
43812
52873
+20.7% 🔴
144.5 KiB
164.9 KiB
+14.1% 🔴
1773
1804
+1.7% 🔴
2604
2591
-0.5% 🟢
173
284
+64.2% 🔴
748
1180
+57.8% 🔴
uniswap_v2_pair 43815
48186
+10.0% 🔴
14128
18864
+33.5% 🔴
24776
30964
+25.0% 🔴
79.4 KiB
97.2 KiB
+22.4% 🔴
888
929
+4.6% 🔴
1371
1404
+2.4% 🔴
80
172
+115.0% 🔴
436
741
+70.0% 🔴
univ2_router 81868
89121
+8.9% 🔴
26157
34270
+31.0% 🔴
46170
54550
+18.2% 🔴
164.8 KiB
180.6 KiB
+9.6% 🔴
2009
2085
+3.8% 🔴
2909
2821
-3.0% 🟢
272
406
+49.3% 🔴
537
1195
+122.5% 🔴
seaport 131064
147414
+12.5% 🔴
50577
67531
+33.5% 🔴
94440
119235
+26.3% 🔴
293.2 KiB
360.5 KiB
+22.9% 🔴
4232
4587
+8.4% 🔴
5268
5104
-3.1% 🟢
437
1094
+150.3% 🔴
2483
5316
+114.1% 🔴
airdrop 27296
29759
+9.0% 🔴
9377
12155
+29.6% 🔴
17198
19964
+16.1% 🔴
47.2 KiB
56.5 KiB
+19.8% 🔴
560
576
+2.9% 🔴
841
868
+3.2% 🔴
57
104
+82.5% 🔴
340
398
+17.1% 🔴
bswap64 2119
2441
+15.2% 🔴
537
781
+45.4% 🔴
1013
1113
+9.9% 🔴
2.6 KiB
3.4 KiB
+30.9% 🔴
29
29
=
53
34
-35.8% 🟢
0
2
-
0
2
-
bswap64_opt 1807
1967
+8.9% 🔴
490
632
+29.0% 🔴
911
1100
+20.7% 🔴
2.5 KiB
3.2 KiB
+26.7% 🔴
33
34
+3.0% 🔴
51
54
+5.9% 🔴
0
6
-
0
6
-
eip4788 597
616
+3.2% 🔴
224
243
+8.5% 🔴
409
422
+3.2% 🔴
716 B
777 B
+8.5% 🔴
8
9
+12.5% 🔴
9
10
+11.1% 🔴
1
1
=
1
1
=
eip2935 542
561
+3.5% 🔴
196
215
+9.7% 🔴
398
412
+3.5% 🔴
739 B
807 B
+9.2% 🔴
6
7
+16.7% 🔴
5
6
+20.0% 🔴
0
0
-
0
0
-
curve_stableswap 23318
24807
+6.4% 🔴
8645
10136
+17.2% 🔴
15632
17594
+12.6% 🔴
28.2 KiB
32.0 KiB
+13.4% 🔴
522
529
+1.3% 🔴
812
832
+2.5% 🔴
25
94
+276.0% 🔴
106
208
+96.2% 🔴
onchain_lm_v2 62942
66045
+4.9% 🔴
21343
24475
+14.7% 🔴
40361
46731
+15.8% 🔴
107.6 KiB
119.9 KiB
+11.4% 🔴
1353
1369
+1.2% 🔴
1692
1654
-2.2% 🟢
67
250
+273.1% 🔴
471
1998
+324.2% 🔴
burntpix 209433
231479
+10.5% 🔴
71854
94564
+31.6% 🔴
131821
158444
+20.2% 🔴
221.1 KiB
260.3 KiB
+17.7% 🔴
5298
5743
+8.4% 🔴
6832
6773
-0.9% 🟢
599
1571
+162.3% 🔴
2709
4877
+80.0% 🔴
0x184e2e0d92… 133707
150000
+12.2% 🔴
38875
54319
+39.7% 🔴
69865
91006
+30.3% 🔴
229.5 KiB
302.8 KiB
+31.9% 🔴
2987
3141
+5.2% 🔴
4488
4849
+8.0% 🔴
360
1301
+261.4% 🔴
2623
3151
+20.1% 🔴
0x26f3fa5857… 137618
154764
+12.5% 🔴
36315
54355
+49.7% 🔴
75489
97788
+29.5% 🔴
302.2 KiB
358.8 KiB
+18.7% 🔴
3594
3836
+6.7% 🔴
5343
5088
-4.8% 🟢
619
887
+43.3% 🔴
2204
2957
+34.2% 🔴
0x7497bfab49… 138128
155096
+12.3% 🔴
36592
54435
+48.8% 🔴
75492
98162
+30.0% 🔴
301.7 KiB
359.3 KiB
+19.1% 🔴
3614
3847
+6.4% 🔴
5337
5077
-4.9% 🟢
622
897
+44.2% 🔴
2099
2980
+42.0% 🔴
0x8819f74c38… 146858
163553
+11.4% 🔴
41987
60189
+43.4% 🔴
83405
105917
+27.0% 🔴
313.1 KiB
375.7 KiB
+20.0% 🔴
3910
4138
+5.8% 🔴
5108
4911
-3.9% 🟢
755
1307
+73.1% 🔴
2334
2406
+3.1% 🔴
0x9806ed1505… 121237
131966
+8.8% 🔴
38300
49741
+29.9% 🔴
62144
73706
+18.6% 🔴
206.3 KiB
229.0 KiB
+11.0% 🔴
2538
2626
+3.5% 🔴
3421
3462
+1.2% 🔴
463
835
+80.3% 🔴
1371
2626
+91.5% 🔴
0xcc74d4c66f… 120770
134565
+11.4% 🔴
37222
51259
+37.7% 🔴
66056
84010
+27.2% 🔴
212.0 KiB
265.4 KiB
+25.2% 🔴
2628
2729
+3.8% 🔴
3529
3475
-1.5% 🟢
253
586
+131.6% 🔴
1532
2095
+36.7% 🔴
0xd450e90507… 130432
148543
+13.9% 🔴
37611
56649
+50.6% 🔴
68461
91288
+33.3% 🔴
237.4 KiB
304.5 KiB
+28.3% 🔴
2884
2990
+3.7% 🔴
4468
4361
-2.4% 🟢
284
1138
+300.7% 🔴
1608
1400
-12.9% 🟢
0xfbbee2ff80… 119347
133075
+11.5% 🔴
36798
50744
+37.9% 🔴
65384
82946
+26.9% 🔴
209.9 KiB
263.3 KiB
+25.4% 🔴
2597
2697
+3.9% 🔴
3492
3438
-1.5% 🟢
250
609
+143.6% 🔴
1520
2252
+48.2% 🔴
0xfc5900eac5… 96799
104854
+8.3% 🔴
28868
37443
+29.7% 🔴
45165
53327
+18.1% 🔴
145.6 KiB
165.4 KiB
+13.6% 🔴
1874
1966
+4.9% 🔴
2735
2796
+2.2% 🔴
199
444
+123.1% 🔴
885
1348
+52.3% 🔴
TOTAL 1898670
2105688
+10.9% 🔴
593096
808544
+36.3% 🔴
1092708
1359118
+24.4% 🔴
3.3 MiB
4.0 MiB
+20.1% 🔴
45414
47926
+5.5% 🔴
63641
62845
-1.3% 🟢
5696
12445
+118.5% 🔴
24763
40194
+62.3% 🔴

Compile times

benchmark total parse translate finalize codegen
fibonacci-calldata +3.4% 🔴 +0.4% 🔴 +37.7% 🔴 +5.5% 🔴 -4.8% 🟢
factorial -0.3% 🟢 -35.7% 🟢 -13.6% 🟢 -2.5% 🟢 +8.4% 🔴
counter +9.2% 🔴 +7.4% 🔴 +9.1% 🔴 +5.2% 🔴 +16.6% 🔴
snailtracer +29.7% 🔴 +0.1% 🔴 +8.1% 🔴 +31.8% 🔴 +27.7% 🔴
weth +36.1% 🔴 +6.5% 🔴 +21.6% 🔴 +35.5% 🔴 +38.7% 🔴
hash_10k +25.1% 🔴 -13.5% 🟢 -0.6% 🟢 +23.9% 🔴 +33.1% 🔴
erc20_transfer +26.6% 🔴 -14.7% 🟢 -10.5% 🟢 +27.2% 🔴 +27.7% 🔴
push0_proxy -11.3% 🟢 -32.7% 🟢 -23.5% 🟢 -8.3% 🟢 -12.9% 🟢
usdc_proxy +18.4% 🔴 -0.8% 🟢 -5.6% 🟢 +17.6% 🔴 +21.7% 🔴
fiat_token +41.3% 🔴 +3.9% 🔴 +14.3% 🔴 +40.3% 🔴 +44.7% 🔴
uniswap_v2_pair +20.1% 🔴 +0.6% 🔴 +13.7% 🔴 +10.3% 🔴 +39.4% 🔴
univ2_router +35.4% 🔴 +4.2% 🔴 +16.7% 🔴 +36.9% 🔴 +34.4% 🔴
seaport +44.0% 🔴 -26.2% 🟢 +6.1% 🔴 +45.2% 🔴 +44.5% 🔴
airdrop +7.2% 🔴 +0.4% 🔴 +6.2% 🔴 -3.7% 🟢 +30.2% 🔴
bswap64 +27.9% 🔴 -3.2% 🟢 +11.2% 🔴 +26.2% 🔴 +35.0% 🔴
bswap64_opt +26.2% 🔴 +6.2% 🔴 -5.4% 🟢 +27.5% 🔴 +28.3% 🔴
eip4788 +5.9% 🔴 -3.4% 🟢 -0.5% 🟢 +6.1% 🔴 +7.1% 🔴
eip2935 -3.4% 🟢 -24.0% 🟢 -17.4% 🟢 -1.7% 🟢 -2.5% 🟢
curve_stableswap +16.7% 🔴 -6.9% 🟢 -8.7% 🟢 +15.7% 🔴 +20.2% 🔴
onchain_lm_v2 +17.5% 🔴 -2.6% 🟢 +12.3% 🔴 +20.9% 🔴 +22.9% 🔴
burntpix +21.3% 🔴 +0.3% 🔴 +10.6% 🔴 +23.2% 🔴 +18.7% 🔴
0x184e2e0d92… +35.9% 🔴 -1.7% 🟢 -4.9% 🟢 +36.0% 🔴 +38.1% 🔴
0x26f3fa5857… +60.9% 🔴 +3.3% 🔴 +13.7% 🔴 +60.6% 🔴 +64.8% 🔴
0x7497bfab49… +58.9% 🔴 +1.5% 🔴 +10.8% 🔴 +57.6% 🔴 +64.4% 🔴
0x8819f74c38… +52.6% 🔴 +2.6% 🔴 +18.1% 🔴 +55.0% 🔴 +51.1% 🔴
0x9806ed1505… +33.3% 🔴 +0.8% 🔴 +12.1% 🔴 +34.7% 🔴 +32.3% 🔴
0xcc74d4c66f… +43.9% 🔴 = +7.8% 🔴 +46.7% 🔴 +41.3% 🔴
0xd450e90507… +73.8% 🔴 -3.3% 🟢 +6.8% 🔴 +67.1% 🔴 +90.3% 🔴
0xfbbee2ff80… +59.3% 🔴 -4.1% 🟢 +22.5% 🔴 +56.4% 🔴 +67.1% 🔴
0xfc5900eac5… +69.6% 🔴 -2.4% 🟢 +14.1% 🔴 +59.0% 🔴 +92.5% 🔴
TOTAL +41.5% 🔴 -2.4% 🟢 +10.0% 🔴 +41.3% 🔴 +44.7% 🔴
Full compile times
benchmark total parse translate finalize codegen
fibonacci-calldata 9.74ms
10.1ms
+3.4% 🔴
191.1µs
191.9µs
+0.4% 🔴
481.2µs
662.6µs
+37.7% 🔴
5.69ms
6.01ms
+5.5% 🔴
3.37ms
3.21ms
-4.8% 🟢
factorial 11.0ms
11.0ms
-0.3% 🟢
288.9µs
185.8µs
-35.7% 🟢
586.8µs
507.2µs
-13.6% 🟢
6.47ms
6.32ms
-2.5% 🟢
3.64ms
3.95ms
+8.4% 🔴
counter 13.7ms
14.9ms
+9.2% 🔴
348.4µs
374.2µs
+7.4% 🔴
586.3µs
639.4µs
+9.1% 🔴
8.21ms
8.64ms
+5.2% 🔴
4.52ms
5.27ms
+16.6% 🔴
snailtracer 1.602s
2.078s
+29.7% 🔴
8.27ms
8.28ms
+0.1% 🔴
11.0ms
11.9ms
+8.1% 🔴
903.0ms
1.190s
+31.8% 🔴
679.7ms
868.1ms
+27.7% 🔴
weth 164.4ms
223.8ms
+36.1% 🔴
2.17ms
2.31ms
+6.5% 🔴
2.73ms
3.32ms
+21.6% 🔴
97.1ms
131.6ms
+35.5% 🔴
62.4ms
86.6ms
+38.7% 🔴
hash_10k 16.0ms
20.0ms
+25.1% 🔴
348.6µs
301.7µs
-13.5% 🟢
654.7µs
650.9µs
-0.6% 🟢
9.62ms
11.9ms
+23.9% 🔴
5.34ms
7.11ms
+33.1% 🔴
erc20_transfer 326.4ms
413.1ms
+26.6% 🔴
3.28ms
2.80ms
-14.7% 🟢
3.76ms
3.36ms
-10.5% 🟢
190.3ms
242.1ms
+27.2% 🔴
129.0ms
164.8ms
+27.7% 🔴
push0_proxy 11.1ms
9.84ms
-11.3% 🟢
252.4µs
169.9µs
-32.7% 🟢
634.2µs
484.8µs
-23.5% 🟢
6.48ms
5.94ms
-8.3% 🟢
3.72ms
3.24ms
-12.9% 🟢
usdc_proxy 108.8ms
128.9ms
+18.4% 🔴
1.45ms
1.43ms
-0.8% 🟢
2.07ms
1.95ms
-5.6% 🟢
65.7ms
77.3ms
+17.6% 🔴
39.6ms
48.2ms
+21.7% 🔴
fiat_token 1.320s
1.865s
+41.3% 🔴
15.3ms
15.9ms
+3.9% 🔴
14.7ms
16.8ms
+14.3% 🔴
792.6ms
1.112s
+40.3% 🔴
497.5ms
719.9ms
+44.7% 🔴
uniswap_v2_pair 732.3ms
879.2ms
+20.1% 🔴
7.25ms
7.29ms
+0.6% 🔴
8.29ms
9.42ms
+13.7% 🔴
470.6ms
519.2ms
+10.3% 🔴
246.2ms
343.3ms
+39.4% 🔴
univ2_router 1.386s
1.876s
+35.4% 🔴
14.8ms
15.5ms
+4.2% 🔴
15.9ms
18.6ms
+16.7% 🔴
819.8ms
1.122s
+36.9% 🔴
535.6ms
719.9ms
+34.4% 🔴
seaport 3.328s
4.793s
+44.0% 🔴
28.0ms
20.7ms
-26.2% 🟢
27.8ms
29.5ms
+6.1% 🔴
2.136s
3.102s
+45.2% 🔴
1.136s
1.641s
+44.5% 🔴
airdrop 496.9ms
532.7ms
+7.2% 🔴
4.73ms
4.75ms
+0.4% 🔴
5.67ms
6.02ms
+6.2% 🔴
328.9ms
316.7ms
-3.7% 🟢
157.6ms
205.3ms
+30.2% 🔴
bswap64 23.2ms
29.7ms
+27.9% 🔴
528.6µs
511.7µs
-3.2% 🟢
879.3µs
977.6µs
+11.2% 🔴
14.0ms
17.7ms
+26.2% 🔴
7.80ms
10.5ms
+35.0% 🔴
bswap64_opt 21.6ms
27.3ms
+26.2% 🔴
447.7µs
475.6µs
+6.2% 🔴
802.4µs
758.8µs
-5.4% 🟢
12.5ms
16.0ms
+27.5% 🔴
7.86ms
10.1ms
+28.3% 🔴
eip4788 12.0ms
12.7ms
+5.9% 🔴
246.5µs
238.1µs
-3.4% 🟢
593.5µs
590.7µs
-0.5% 🟢
7.10ms
7.54ms
+6.1% 🔴
4.03ms
4.32ms
+7.1% 🔴
eip2935 11.5ms
11.1ms
-3.4% 🟢
279.0µs
212.2µs
-24.0% 🟢
635.9µs
525.2µs
-17.4% 🟢
6.73ms
6.61ms
-1.7% 🟢
3.89ms
3.79ms
-2.5% 🟢
curve_stableswap 397.3ms
463.8ms
+16.7% 🔴
4.35ms
4.05ms
-6.9% 🟢
5.36ms
4.89ms
-8.7% 🟢
248.0ms
287.1ms
+15.7% 🔴
139.6ms
167.8ms
+20.2% 🔴
onchain_lm_v2 1.540s
1.809s
+17.5% 🔴
262.8ms
255.9ms
-2.6% 🟢
14.2ms
16.0ms
+12.3% 🔴
748.8ms
905.3ms
+20.9% 🔴
514.4ms
632.1ms
+22.9% 🔴
burntpix 5.335s
6.470s
+21.3% 🔴
38.6ms
38.7ms
+0.3% 🔴
42.8ms
47.3ms
+10.6% 🔴
3.226s
3.976s
+23.2% 🔴
2.028s
2.408s
+18.7% 🔴
0x184e2e0d92… 2.591s
3.522s
+35.9% 🔴
25.5ms
25.0ms
-1.7% 🟢
30.5ms
29.0ms
-4.9% 🟢
1.608s
2.187s
+36.0% 🔴
927.3ms
1.281s
+38.1% 🔴
0x26f3fa5857… 2.084s
3.354s
+60.9% 🔴
22.8ms
23.5ms
+3.3% 🔴
25.6ms
29.1ms
+13.7% 🔴
1.227s
1.970s
+60.6% 🔴
808.4ms
1.332s
+64.8% 🔴
0x7497bfab49… 2.088s
3.318s
+58.9% 🔴
22.5ms
22.8ms
+1.5% 🔴
26.4ms
29.2ms
+10.8% 🔴
1.244s
1.960s
+57.6% 🔴
795.2ms
1.307s
+64.4% 🔴
0x8819f74c38… 2.592s
3.956s
+52.6% 🔴
24.4ms
25.1ms
+2.6% 🔴
27.5ms
32.5ms
+18.1% 🔴
1.539s
2.386s
+55.0% 🔴
1.001s
1.513s
+51.1% 🔴
0x9806ed1505… 2.453s
3.271s
+33.3% 🔴
20.1ms
20.3ms
+0.8% 🔴
23.9ms
26.7ms
+12.1% 🔴
1.550s
2.088s
+34.7% 🔴
858.9ms
1.136s
+32.3% 🔴
0xcc74d4c66f… 2.196s
3.160s
+43.9% 🔴
20.2ms
20.2ms
=
23.7ms
25.6ms
+7.8% 🔴
1.348s
1.977s
+46.7% 🔴
804.2ms
1.136s
+41.3% 🔴
0xd450e90507… 2.080s
3.616s
+73.8% 🔴
22.2ms
21.5ms
-3.3% 🟢
26.8ms
28.6ms
+6.8% 🔴
1.286s
2.149s
+67.1% 🔴
744.7ms
1.417s
+90.3% 🔴
0xfbbee2ff80… 1.969s
3.136s
+59.3% 🔴
19.9ms
19.1ms
-4.1% 🟢
21.4ms
26.3ms
+22.5% 🔴
1.226s
1.918s
+56.4% 🔴
701.8ms
1.173s
+67.1% 🔴
0xfc5900eac5… 1.477s
2.505s
+69.6% 🔴
16.7ms
16.3ms
-2.4% 🟢
18.1ms
20.6ms
+14.1% 🔴
921.8ms
1.466s
+59.0% 🔴
520.4ms
1.002s
+92.5% 🔴
TOTAL 36.397s
51.517s
+41.5% 🔴
588.3ms
574.0ms
-2.4% 🟢
383.9ms
422.3ms
+10.0% 🔴
22.054s
31.169s
+41.3% 🔴
13.372s
19.353s
+44.7% 🔴

Add codegen timing field to Remarks, CompileTimings public struct,
backend()/backend_mut() accessors, and take_timings() API.
Derive Debug on EvmCompiler via derive_more.
Add call_with_interpreter_with() to configure EvmContext before execution,
enabling inspector callbacks like on_log without full handler override.
Charge state gas for new slot creation in SSTORE and new account
creation in SELFDESTRUCT when Amsterdam EIP-8037 is enabled.
Also fire on_log callback in LOG builtin and fix prevrandao unwrap.
Use owned State<EmptyDB> instead of transmuting a mutable reference
to 'static. The Handler trait no longer requires the 'static bound.
Cover Petersburg and Istanbul specs where static gas costs
differ from Berlin+ (700 vs 100).
Override inspect_frame_run to dispatch JIT-compiled functions with
on_log callback forwarding to the inspector, selfdestruct handling,
and frame_end notification. Also impl InspectCommitEvm blanket.
The ecx pointer is passed to extern builtin calls which modify the same
allocation. With noalias, LLVM may hoist or cache loads across those
calls, leading to incorrect gas accounting.

Also set debug_assertions(false) in the statetest compiler so CI
exercises the production attribute path.
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 25, 2026

Merging this PR will degrade performance by 28.86%

⚡ 2 improved benchmarks
❌ 9 regressed benchmarks
✅ 54 untouched benchmarks
⏩ 24 skipped benchmarks1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Benchmark BASE HEAD Efficiency
erc20_transfer/compile/jit 811.4 ms 1,018.9 ms -20.37%
bswap64/compile/jit 40.4 ms 52 ms -22.25%
bswap64/compile/translate 1.6 ms 1.7 ms -10.5%
burntpix/rt/jit 73.9 ms 55.2 ms +33.72%
bswap64_opt/compile/jit 39.1 ms 51 ms -23.23%
counter/compile/jit 21.4 ms 23.9 ms -10.45%
onchain_lm_v2/rt/jit 423.7 ms 286.6 ms +47.83%
hash_10k/compile/jit 24.6 ms 34.6 ms -28.86%
uniswap_v2_pair/compile/translate 25.5 ms 28.5 ms -10.29%
weth/compile/jit 383 ms 506.7 ms -24.41%
weth/compile/translate 7.3 ms 8.2 ms -10.85%

Comparing dani/compiler-improvements (647c7a3) with main (b7f522e)

Open in CodSpeed

Footnotes

  1. 24 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@DaniPopes DaniPopes marked this pull request as draft April 25, 2026 02:33
@DaniPopes DaniPopes changed the title perf: inline address masking and improve constant folding perf: inline MLOAD/MSTORE Apr 27, 2026
@DaniPopes DaniPopes marked this pull request as ready for review April 28, 2026 19:23
@DaniPopes DaniPopes marked this pull request as draft April 28, 2026 23:32
@DaniPopes DaniPopes marked this pull request as ready for review April 29, 2026 11:38
@DaniPopes DaniPopes enabled auto-merge (squash) April 29, 2026 11:38
@DaniPopes DaniPopes merged commit 11077b0 into main Apr 29, 2026
37 of 40 checks passed
@DaniPopes DaniPopes deleted the dani/compiler-improvements branch April 29, 2026 11:41
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.

1 participant