Skip to content

feat: resolve Solidity jump patterns#375

Open
DaniPopes wants to merge 28 commits into
mainfrom
dani/sound-solidity-jumps-v2
Open

feat: resolve Solidity jump patterns#375
DaniPopes wants to merge 28 commits into
mainfrom
dani/sound-solidity-jumps-v2

Conversation

@DaniPopes
Copy link
Copy Markdown
Collaborator

@DaniPopes DaniPopes commented May 6, 2026

This resolves Solidity-style dynamic jump patterns with context-sensitive abstract interpretation while keeping unresolved jumps conservative. The analysis preserves separate return-target contexts for internal-function style dispatch, handles constant JUMPI conditions, and compiles finite mixed valid/invalid target sets as multi-jumps with the invalid case handled by the switch default.

The latest update avoids redundant abstract interpretation when the split analysis already hit its iteration cap and skips no-op constant-set joins while merging stack states and snapshots. That keeps the large codegen wins from the added jump precision without paying the prior translate-time regression on contracts where the extra pass resolved nothing.

Benchmarks

All-benchmark results vs main: unopt.ll -13.5%, opt.ll -14.0%, opt.s -12.4%, JIT size -9.4%, total compile time -14.9%, translate time -13.4%, finalize -15.4%, and codegen -14.8%. The largest output and compile-time wins are on 0xfc5900eac5…, 0x9806ed1505…, and burntpix; most unchanged-output contracts are near flat, with the main compile-time regressions in this run concentrated in already-unmodified outputs such as snailtracer and fiat_token.

Codegen statistics

benchmark unopt.ll opt.ll opt.s jit size i256 loads i256 stores mresize spills reloads
weth -7.6% 🟢 -24.6% 🟢 -15.1% 🟢 -8.4% 🟢 -11.2% 🟢 -7.4% 🟢 -11.4% 🟢 +23.1% 🔴 +17.9% 🔴
erc20_transfer -5.7% 🟢 -21.4% 🟢 -29.7% 🟢 -24.2% 🟢 -20.1% 🟢 -8.0% 🟢 = +118.2% 🔴 +48.5% 🔴
curve_stableswap -0.7% 🟢 -4.4% 🟢 -6.9% 🟢 = -3.6% 🟢 -1.2% 🟢 = +63.2% 🔴 +129.6% 🔴
burntpix -54.7% 🟢 -51.8% 🟢 -47.9% 🟢 -49.0% 🟢 -45.2% 🟢 -48.9% 🟢 -43.9% 🟢 -33.8% 🟢 -62.4% 🟢
0x9806ed1505… -57.9% 🟢 -64.3% 🟢 -59.8% 🟢 -55.2% 🟢 -63.1% 🟢 -56.0% 🟢 -63.4% 🟢 -60.4% 🟢 -54.3% 🟢
0xfc5900eac5… -75.3% 🟢 -78.4% 🟢 -74.0% 🟢 -69.8% 🟢 -72.3% 🟢 -73.1% 🟢 -75.6% 🟢 -57.7% 🟢 -55.0% 🟢
TOTAL -13.5% 🟢 -14.0% 🟢 -12.4% 🟢 -9.4% 🟢 -12.1% 🟢 -11.7% 🟢 -9.9% 🟢 -12.4% 🟢 -16.4% 🟢
Full details
benchmark unopt.ll opt.ll opt.s jit size i256 loads i256 stores mresize spills reloads
fibonacci-calldata 370
370
=
126
126
=
354
354
=
400 B
400 B
=
2
2
=
2
2
=
2
2
=
5
5
=
4
4
=
factorial 362
362
=
128
128
=
392
392
=
530 B
530 B
=
2
2
=
2
2
=
2
2
=
5
5
=
6
6
=
counter 1038
1038
=
359
359
=
602
602
=
914 B
914 B
=
9
9
=
9
9
=
3
3
=
0
0
-
0
0
-
snailtracer 61771
61771
=
27714
27714
=
47245
47245
=
125.8 KiB
125.8 KiB
=
1540
1540
=
2172
2172
=
452
452
=
29
29
=
600
600
=
weth 13355
12346
-7.6% 🟢
4360
3286
-24.6% 🟢
7030
5970
-15.1% 🟢
20.8 KiB
19.0 KiB
-8.4% 🟢
267
237
-11.2% 🟢
349
323
-7.4% 🟢
35
31
-11.4% 🟢
13
16
+23.1% 🔴
28
33
+17.9% 🔴
hash_10k 1036
1036
=
376
376
=
715
715
=
1.6 KiB
1.6 KiB
=
17
17
=
21
21
=
6
6
=
0
0
-
0
0
-
erc20_transfer 14652
13822
-5.7% 🟢
5673
4458
-21.4% 🟢
10766
7570
-29.7% 🟢
27.8 KiB
21.1 KiB
-24.2% 🟢
309
247
-20.1% 🟢
452
416
-8.0% 🟢
53
53
=
11
24
+118.2% 🔴
33
49
+48.5% 🔴
push0_proxy 371
371
=
183
183
=
339
339
=
633 B
633 B
=
1
1
=
15
15
=
0
0
-
0
0
-
0
0
-
usdc_proxy 7446
7446
=
2914
2914
=
5085
5085
=
11.8 KiB
11.8 KiB
=
104
104
=
196
196
=
22
22
=
9
9
=
8
8
=
fiat_token 82413
82413
=
29357
29357
=
49530
49530
=
153.7 KiB
153.7 KiB
=
1803
1803
=
2575
2575
=
313
313
=
86
86
=
140
140
=
uniswap_v2_pair 46530
46530
=
17194
17194
=
28601
28601
=
87.0 KiB
87.0 KiB
=
926
926
=
1398
1398
=
176
176
=
44
44
=
69
69
=
univ2_router 87275
87275
=
32338
32338
=
51399
51399
=
165.1 KiB
165.1 KiB
=
2061
2061
=
2819
2819
=
362
362
=
169
169
=
547
547
=
seaport 145378
145378
=
64808
64808
=
112445
112445
=
331.6 KiB
331.6 KiB
=
4577
4577
=
5099
5099
=
866
866
=
228
228
=
3958
3958
=
airdrop 28825
28825
=
10991
10991
=
18680
18680
=
48.5 KiB
48.5 KiB
=
575
575
=
861
861
=
100
100
=
39
39
=
224
224
=
bswap64 2111
2111
=
576
576
=
887
887
=
2.2 KiB
2.2 KiB
=
29
29
=
32
32
=
6
6
=
0
0
-
0
0
-
bswap64_opt 1917
1917
=
584
584
=
1043
1043
=
2.8 KiB
2.8 KiB
=
34
34
=
54
54
=
8
8
=
2
2
=
2
2
=
eip4788 614
614
=
241
241
=
473
473
=
764 B
764 B
=
9
9
=
10
10
=
2
2
=
1
1
=
1
1
=
eip2935 526
526
=
203
203
=
466
466
=
765 B
765 B
=
7
7
=
6
6
=
2
2
=
2
2
=
2
2
=
curve_stableswap 24115
23955
-0.7% 🟢
9436
9021
-4.4% 🟢
16631
15488
-6.9% 🟢
29.7 KiB
29.7 KiB
=
526
507
-3.6% 🟢
827
817
-1.2% 🟢
50
50
=
19
31
+63.2% 🔴
27
62
+129.6% 🔴
onchain_lm_v2 65644
65644
=
24072
24072
=
43717
43717
=
111.8 KiB
111.8 KiB
=
1369
1369
=
1654
1654
=
169
169
=
61
61
=
289
289
=
burntpix 226843
102768
-54.7% 🟢
89254
43026
-51.8% 🟢
148816
77523
-47.9% 🟢
240.2 KiB
122.5 KiB
-49.0% 🟢
5723
3138
-45.2% 🟢
6745
3446
-48.9% 🟢
1030
578
-43.9% 🟢
358
237
-33.8% 🟢
3374
1269
-62.4% 🟢
0x184e2e0d92… 138819
138819
=
43852
43852
=
74687
74687
=
241.9 KiB
241.9 KiB
=
3125
3125
=
4732
4732
=
253
253
=
161
161
=
1856
1856
=
0x26f3fa5857… 150890
150890
=
50065
50065
=
88699
88699
=
320.2 KiB
320.2 KiB
=
3797
3797
=
5088
5088
=
832
832
=
186
186
=
751
751
=
0x7497bfab49… 151235
151235
=
50172
50172
=
87776
87776
=
318.5 KiB
318.5 KiB
=
3808
3808
=
5077
5077
=
823
823
=
205
205
=
1375
1375
=
0x8819f74c38… 160455
160455
=
56591
56591
=
95933
95933
=
324.5 KiB
324.5 KiB
=
4110
4110
=
4911
4911
=
864
864
=
84
84
=
562
562
=
0x9806ed1505… 127930
53912
-57.9% 🟢
45614
16279
-64.3% 🟢
68219
27403
-59.8% 🟢
203.8 KiB
91.2 KiB
-55.2% 🟢
2585
953
-63.1% 🟢
3453
1520
-56.0% 🟢
402
147
-63.4% 🟢
268
106
-60.4% 🟢
812
371
-54.3% 🟢
0xcc74d4c66f… 131624
131624
=
47929
47929
=
75179
75179
=
228.9 KiB
228.9 KiB
=
2675
2675
=
3449
3449
=
663
663
=
142
142
=
773
773
=
0xd450e90507… 145835
145835
=
53262
53262
=
81626
81626
=
260.8 KiB
260.8 KiB
=
2895
2895
=
4360
4360
=
974
974
=
270
270
=
405
405
=
0xfbbee2ff80… 130152
130152
=
47438
47438
=
74390
74390
=
226.5 KiB
226.5 KiB
=
2645
2645
=
3413
3413
=
659
659
=
143
143
=
776
776
=
0xfc5900eac5… 101755
25172
-75.3% 🟢
34269
7404
-78.4% 🟢
48966
12713
-74.0% 🟢
148.5 KiB
44.8 KiB
-69.8% 🟢
1959
542
-72.3% 🟢
2766
744
-73.1% 🟢
295
72
-75.6% 🟢
130
55
-57.7% 🟢
611
275
-55.0% 🟢
TOTAL 2051287
1774612
-13.5% 🟢
750079
644947
-14.0% 🟢
1240691
1086930
-12.4% 🟢
3.6 MiB
3.2 MiB
-9.4% 🟢
47489
41744
-12.1% 🟢
62547
55221
-11.7% 🟢
9424
8490
-9.9% 🟢
2670
2340
-12.4% 🟢
17233
14407
-16.4% 🟢

Compile times

benchmark total parse translate finalize codegen
fibonacci-calldata +23.2% 🔴 -11.3% 🟢 +48.8% 🔴 +16.8% 🔴 +33.1% 🔴
factorial +15.5% 🔴 +5.7% 🔴 +2.9% 🔴 +13.3% 🔴 +20.9% 🔴
counter +9.0% 🔴 +2.8% 🔴 +4.4% 🔴 +7.1% 🔴 +13.1% 🔴
snailtracer +27.1% 🔴 +9.9% 🔴 -0.4% 🟢 +24.0% 🔴 +32.1% 🔴
weth +2.0% 🔴 +31.3% 🔴 +71.6% 🔴 +8.0% 🔴 -10.3% 🟢
hash_10k +19.3% 🔴 +16.9% 🔴 +16.9% 🔴 +16.7% 🔴 +23.7% 🔴
erc20_transfer -40.2% 🟢 +17.1% 🔴 +20.7% 🔴 -39.3% 🟢 -43.8% 🟢
push0_proxy +25.7% 🔴 +15.2% 🔴 +14.5% 🔴 +22.6% 🔴 +33.2% 🔴
usdc_proxy +5.6% 🔴 -6.8% 🟢 -24.2% 🟢 +5.4% 🔴 +8.0% 🔴
fiat_token +16.1% 🔴 +18.9% 🔴 +7.7% 🔴 +18.6% 🔴 +12.1% 🔴
uniswap_v2_pair +1.6% 🔴 +11.1% 🔴 +1.4% 🔴 +3.0% 🔴 -0.7% 🟢
univ2_router -0.1% 🟢 +10.7% 🔴 +3.9% 🔴 +0.8% 🔴 -1.8% 🟢
seaport -8.7% 🟢 +43.0% 🔴 -2.6% 🟢 -4.7% 🟢 -16.3% 🟢
airdrop -15.2% 🟢 -1.2% 🟢 -5.7% 🟢 -18.3% 🟢 -9.0% 🟢
bswap64 -6.4% 🟢 +1.6% 🔴 +0.5% 🔴 -6.4% 🟢 -7.5% 🟢
bswap64_opt -1.1% 🟢 -8.1% 🟢 -0.8% 🟢 -3.7% 🟢 +3.2% 🔴
eip4788 -6.2% 🟢 -5.3% 🟢 -5.4% 🟢 -7.8% 🟢 -3.9% 🟢
eip2935 -5.9% 🟢 +9.8% 🔴 +10.6% 🔴 -1.0% 🟢 -14.6% 🟢
curve_stableswap -10.1% 🟢 +19.7% 🔴 +10.0% 🔴 -9.1% 🟢 -13.1% 🟢
onchain_lm_v2 -3.7% 🟢 +3.1% 🔴 -6.4% 🟢 -4.7% 🟢 -4.8% 🟢
burntpix -56.6% 🟢 -7.9% 🟢 -56.8% 🟢 -60.2% 🟢 -51.2% 🟢
0x26f3fa5857… +2.3% 🔴 -4.3% 🟢 -1.5% 🟢 +7.0% 🔴 -3.9% 🟢
0x7497bfab49… +2.1% 🔴 -6.7% 🟢 +0.1% 🔴 +1.6% 🔴 +3.1% 🔴
0x9806ed1505… -74.1% 🟢 -15.4% 🟢 -56.7% 🟢 -76.5% 🟢 -71.4% 🟢
0xcc74d4c66f… -0.1% 🟢 +17.5% 🔴 -3.7% 🟢 -0.7% 🟢 +0.5% 🔴
0xd450e90507… -0.5% 🟢 +12.9% 🔴 -3.7% 🟢 -0.2% 🟢 -1.2% 🟢
0xfbbee2ff80… -2.4% 🟢 +13.4% 🔴 -2.7% 🟢 -1.6% 🟢 -4.1% 🟢
0xfc5900eac5… -80.5% 🟢 -22.7% 🟢 -74.4% 🟢 -80.9% 🟢 -81.3% 🟢
TOTAL -14.9% 🟢 +3.9% 🔴 -13.4% 🟢 -15.4% 🟢 -14.8% 🟢
Full compile times
benchmark total parse translate finalize codegen
fibonacci-calldata 9.04ms
11.1ms
+23.2% 🔴
211.8µs
187.9µs
-11.3% 🟢
388.9µs
578.7µs
+48.8% 🔴
5.29ms
6.18ms
+16.8% 🔴
3.15ms
4.19ms
+33.1% 🔴
factorial 9.88ms
11.4ms
+15.5% 🔴
175.9µs
185.9µs
+5.7% 🔴
383.0µs
394.2µs
+2.9% 🔴
5.71ms
6.47ms
+13.3% 🔴
3.61ms
4.36ms
+20.9% 🔴
counter 13.5ms
14.7ms
+9.0% 🔴
332.1µs
341.3µs
+2.8% 🔴
529.8µs
553.4µs
+4.4% 🔴
7.94ms
8.50ms
+7.1% 🔴
4.66ms
5.27ms
+13.1% 🔴
snailtracer 2.030s
2.580s
+27.1% 🔴
7.96ms
8.75ms
+9.9% 🔴
12.5ms
12.4ms
-0.4% 🟢
1.161s
1.440s
+24.0% 🔴
848.1ms
1.120s
+32.1% 🔴
weth 192.6ms
196.5ms
+2.0% 🔴
2.14ms
2.81ms
+31.3% 🔴
2.78ms
4.77ms
+71.6% 🔴
112.4ms
121.4ms
+8.0% 🔴
75.2ms
67.5ms
-10.3% 🟢
hash_10k 18.0ms
21.4ms
+19.3% 🔴
287.6µs
336.3µs
+16.9% 🔴
532.1µs
621.8µs
+16.9% 🔴
10.5ms
12.2ms
+16.7% 🔴
6.64ms
8.22ms
+23.7% 🔴
erc20_transfer 367.9ms
219.9ms
-40.2% 🟢
2.29ms
2.69ms
+17.1% 🔴
3.09ms
3.74ms
+20.7% 🔴
214.4ms
130.2ms
-39.3% 🟢
148.1ms
83.3ms
-43.8% 🟢
push0_proxy 9.41ms
11.8ms
+25.7% 🔴
170.9µs
196.8µs
+15.2% 🔴
404.5µs
463.2µs
+14.5% 🔴
5.63ms
6.90ms
+22.6% 🔴
3.21ms
4.28ms
+33.2% 🔴
usdc_proxy 122.3ms
129.1ms
+5.6% 🔴
1.90ms
1.77ms
-6.8% 🟢
2.52ms
1.91ms
-24.2% 🟢
72.7ms
76.6ms
+5.4% 🔴
45.3ms
48.9ms
+8.0% 🔴
fiat_token 1.632s
1.894s
+16.1% 🔴
15.0ms
17.9ms
+18.9% 🔴
16.1ms
17.3ms
+7.7% 🔴
971.4ms
1.152s
+18.6% 🔴
629.9ms
706.0ms
+12.1% 🔴
uniswap_v2_pair 781.4ms
794.2ms
+1.6% 🔴
7.14ms
7.93ms
+11.1% 🔴
9.21ms
9.35ms
+1.4% 🔴
460.9ms
474.9ms
+3.0% 🔴
304.1ms
302.0ms
-0.7% 🟢
univ2_router 1.674s
1.673s
-0.1% 🟢
14.5ms
16.0ms
+10.7% 🔴
16.4ms
17.0ms
+3.9% 🔴
993.4ms
1.001s
+0.8% 🔴
650.1ms
638.6ms
-1.8% 🟢
seaport 4.686s
4.276s
-8.7% 🟢
20.5ms
29.4ms
+43.0% 🔴
27.5ms
26.8ms
-2.6% 🟢
2.908s
2.772s
-4.7% 🟢
1.730s
1.448s
-16.3% 🟢
airdrop 655.1ms
555.8ms
-15.2% 🟢
5.06ms
5.00ms
-1.2% 🟢
6.31ms
5.95ms
-5.7% 🟢
441.4ms
360.7ms
-18.3% 🟢
202.3ms
184.2ms
-9.0% 🟢
bswap64 21.7ms
20.4ms
-6.4% 🟢
522.5µs
530.7µs
+1.6% 🔴
756.3µs
760.4µs
+0.5% 🔴
12.8ms
12.0ms
-6.4% 🟢
7.62ms
7.05ms
-7.5% 🟢
bswap64_opt 25.8ms
25.5ms
-1.1% 🟢
470.9µs
432.7µs
-8.1% 🟢
690.4µs
684.5µs
-0.8% 🟢
15.0ms
14.4ms
-3.7% 🟢
9.69ms
10.00ms
+3.2% 🔴
eip4788 11.8ms
11.1ms
-6.2% 🟢
228.1µs
216.1µs
-5.3% 🟢
466.8µs
441.5µs
-5.4% 🟢
6.88ms
6.35ms
-7.8% 🟢
4.26ms
4.09ms
-3.9% 🟢
eip2935 11.6ms
10.9ms
-5.9% 🟢
183.7µs
201.7µs
+9.8% 🔴
396.4µs
438.5µs
+10.6% 🔴
6.33ms
6.27ms
-1.0% 🟢
4.69ms
4.01ms
-14.6% 🟢
curve_stableswap 435.2ms
391.4ms
-10.1% 🟢
4.01ms
4.80ms
+19.7% 🔴
4.78ms
5.26ms
+10.0% 🔴
271.1ms
246.3ms
-9.1% 🟢
155.4ms
135.1ms
-13.1% 🟢
onchain_lm_v2 1.718s
1.655s
-3.7% 🟢
238.1ms
245.4ms
+3.1% 🔴
16.0ms
14.9ms
-6.4% 🟢
883.8ms
842.3ms
-4.7% 🟢
579.9ms
552.1ms
-4.8% 🟢
burntpix 5.866s
2.546s
-56.6% 🟢
35.2ms
32.4ms
-7.9% 🟢
44.8ms
19.4ms
-56.8% 🟢
3.657s
1.454s
-60.2% 🟢
2.130s
1.040s
-51.2% 🟢
0x184e2e0d92… 2.743s
2.678s
-2.4% 🟢
24.3ms
24.1ms
-0.5% 🟢
27.0ms
26.8ms
-0.7% 🟢
1.656s
1.617s
-2.4% 🟢
1.036s
1.011s
-2.4% 🟢
0x26f3fa5857… 2.916s
2.984s
+2.3% 🔴
24.1ms
23.0ms
-4.3% 🟢
29.9ms
29.4ms
-1.5% 🟢
1.671s
1.788s
+7.0% 🔴
1.191s
1.144s
-3.9% 🟢
0x7497bfab49… 2.800s
2.859s
+2.1% 🔴
24.7ms
23.0ms
-6.7% 🟢
28.4ms
28.4ms
+0.1% 🔴
1.656s
1.682s
+1.6% 🔴
1.091s
1.125s
+3.1% 🔴
0x8819f74c38… 3.418s
3.521s
+3.0% 🔴
24.3ms
25.3ms
+4.1% 🔴
30.0ms
30.2ms
+0.7% 🔴
2.059s
2.138s
+3.8% 🔴
1.305s
1.328s
+1.8% 🔴
0x9806ed1505… 2.887s
748.4ms
-74.1% 🟢
19.5ms
16.5ms
-15.4% 🟢
24.3ms
10.5ms
-56.7% 🟢
1.809s
425.3ms
-76.5% 🟢
1.034s
296.2ms
-71.4% 🟢
0xcc74d4c66f… 2.795s
2.791s
-0.1% 🟢
19.8ms
23.3ms
+17.5% 🔴
24.9ms
24.0ms
-3.7% 🟢
1.745s
1.733s
-0.7% 🟢
1.005s
1.010s
+0.5% 🔴
0xd450e90507… 3.105s
3.089s
-0.5% 🟢
20.9ms
23.6ms
+12.9% 🔴
29.3ms
28.2ms
-3.7% 🟢
1.868s
1.864s
-0.2% 🟢
1.187s
1.173s
-1.2% 🟢
0xfbbee2ff80… 2.806s
2.739s
-2.4% 🟢
20.7ms
23.4ms
+13.4% 🔴
25.9ms
25.2ms
-2.7% 🟢
1.736s
1.709s
-1.6% 🟢
1.023s
981.6ms
-4.1% 🟢
0xfc5900eac5… 1.876s
366.7ms
-80.5% 🟢
16.2ms
12.6ms
-22.7% 🟢
20.0ms
5.11ms
-74.4% 🟢
1.146s
219.2ms
-80.9% 🟢
693.5ms
129.8ms
-81.3% 🟢
TOTAL 45.637s
38.826s
-14.9% 🟢
550.9ms
572.3ms
+3.9% 🔴
406.2ms
351.7ms
-13.4% 🟢
27.570s
23.326s
-15.4% 🟢
17.111s
14.576s
-14.8% 🟢

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented May 6, 2026

Merging this PR will improve performance by 54.63%

⚡ 4 improved benchmarks
❌ 5 regressed benchmarks
✅ 62 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Benchmark BASE HEAD Efficiency
erc20_transfer/compile/jit 936.4 ms 449.5 ms ×2.1
burntpix/compile/jit 10,669.6 ms 455.2 ms ×23
burntpix/compile/translate 83 ms 18.2 ms ×4.6
fiat_token/compile/translate 58.6 ms 81.7 ms -28.25%
curve_stableswap/compile/translate 11.6 ms 15.2 ms -23.97%
onchain_lm_v2/compile/translate 36.1 ms 74.8 ms -51.69%
univ2_router/compile/translate 53.6 ms 62.1 ms -13.68%
usdc_proxy/compile/translate 5.8 ms 8.3 ms -30%
weth/compile/jit 471.2 ms 330.4 ms +42.61%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing dani/sound-solidity-jumps-v2 (5e39ea4) with main (bd333d0)

Open in CodSpeed

Base automatically changed from dani/const-jumpi to main May 12, 2026 18:51
…umps-v2

# Conflicts:
#	crates/revmc-codegen/src/bytecode/mod.rs
#	crates/revmc-codegen/src/bytecode/passes/block_analysis.rs
#	crates/revmc-codegen/src/compiler/translate/mod.rs
@DaniPopes DaniPopes marked this pull request as draft May 12, 2026 19:41
DaniPopes added 8 commits May 12, 2026 22:38
Skip the fallback abstract interpretation pass when the split pass already hit its iteration cap, since conservative invalidation has restored safe local snapshots and the fallback was resolving zero jumps in the regressing contracts.

Also avoid no-op constant-set joins for stack states and snapshots. Local Criterion compile/translate measurements improved onchain_lm_v2 from ~15.0ms to ~4.20ms, fiat_token from ~11.8ms to ~5.81ms, and usdc_proxy from ~1.32ms to ~1.03ms while preserving burntpix at ~2.36ms.
@DaniPopes
Copy link
Copy Markdown
Collaborator Author

DaniPopes commented May 16, 2026

big gains are from marking inner child contracts as dead code, e.g. new Contract() will inline the child code and then callsite will do CODECOPY.

regression are tolerable. they're at translate phase which overall is <10% of the total compilation time anyway, so not that measurable overall.

@DaniPopes DaniPopes marked this pull request as ready for review May 16, 2026 02:45
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