Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix local.set preservation bug #834

Merged
merged 4 commits into from
Dec 5, 2023
Merged

Conversation

Robbepop
Copy link
Member

@Robbepop Robbepop commented Dec 5, 2023

When translating

(local.set $n (local.get $n))

or

(local.tee $n (local.get $n))

The wasmi translation now properly ignores this since the whole sequence can be ignored and no longer runs into preservation issues. Note: While this change fixes the tagged test case there might be more bugs in local variable preservation that we might need to fix later.

@paritytech-cicd-pr
Copy link

paritytech-cicd-pr commented Dec 5, 2023

BENCHMARKS

NATIVEWASMTIME
BENCHMARKMASTERPRDIFFMASTERPRDIFFWASMTIME OVERHEAD
execute/
br_table
1.50ms 1.49ms ⚪ -0.33% 1.29ms 1.33ms 🔴 3.61% 🟢 -10%
execute/
call/host/1
45.71µs 44.55µs 🟢 -2.58% 65.35µs 64.63µs ⚪ -0.94% 🟢 45%
execute/
call/rec
167.52µs 167.27µs ⚪ -0.21% 351.10µs 349.66µs ⚪ -0.47% 🔴 109%
execute/
count_until
7.42ms 6.70ms 🟢 -9.78% 7.52ms 7.58ms ⚪ 0.81% 🟢 13%
execute/
divrem
6.27ms 6.23ms ⚪ -0.57% 7.53ms 6.96ms 🟢 -7.65% 🟢 12%
execute/
factorial/iter
218.99µs 246.27µs 🔴 12.74% 314.30µs 312.38µs ⚪ -0.52% 🟢 27%
execute/
factorial/rec
698.38µs 677.50µs 🟢 -2.97% 1.32ms 1.29ms 🟢 -2.87% 🟡 90%
execute/
fibonacci/iter
1.36ms 1.30ms 🟢 -4.38% 1.26ms 1.25ms ⚪ -0.54% 🟢 -3%
execute/
fibonacci/rec
6.07ms 6.09ms ⚪ 0.33% 12.87ms 13.53ms 🔴 5.07% 🔴 122%
execute/
fibonacci/tail
1.37ms 1.37ms ⚪ -0.15% 3.85ms 3.65ms 🟢 -4.99% 🔴 167%
execute/
fuse
7.38ms 7.39ms ⚪ 0.13% 11.44ms 11.48ms ⚪ 0.48% 🟡 55%
execute/
global/bump
1.32ms 1.32ms ⚪ 0.00% 1.54ms 1.55ms ⚪ 0.57% 🟢 17%
execute/
global/get_const
728.46µs 698.80µs 🟢 -3.94% 750.75µs 744.82µs ⚪ -0.79% 🟢 7%
execute/
is_even/rec
1.08ms 1.09ms ⚪ 1.05% 2.23ms 2.22ms ⚪ -0.70% 🔴 104%
execute/
memory/fill_bytes
1.23ms 1.07ms 🟢 -11.29% 1.32ms 1.31ms ⚪ -0.47% 🟢 22%
execute/
memory/sum_bytes
1.09ms 1.09ms ⚪ -0.04% 1.25ms 1.23ms 🟢 -1.84% 🟢 13%
execute/
memory/vec_add
2.95ms 2.95ms ⚪ 0.01% 3.62ms 3.60ms ⚪ -0.55% 🟢 22%
execute/
recursive_scan
187.06µs 189.13µs ⚪ 1.01% 382.39µs 380.72µs ⚪ -0.44% 🔴 101%
execute/
recursive_trap
15.77µs 15.64µs ⚪ -0.99% 34.94µs 35.30µs ⚪ 1.10% 🔴 126%
execute/
regex_redux
596.08µs 591.51µs ⚪ -0.51% 1.09ms 1.03ms 🟢 -5.49% 🟡 74%
execute/
rev_complement
442.95µs 442.63µs ⚪ -0.10% 679.66µs 628.32µs 🟢 -7.49% 🟢 42%
execute/
tiny_keccak
351.54µs 350.19µs ⚪ -0.48% 382.42µs 382.08µs ⚪ -0.10% 🟢 9%
execute/
trunc_f2i
614.16µs 616.02µs ⚪ 0.31% 961.70µs 954.12µs ⚪ -0.85% 🟡 55%
instantiate/
wasm_kernel
53.39µs 54.67µs ⚪ 1.03% 54.27µs 55.03µs 🔴 2.30% 🟢 1%
overhead/
call/typed/0
1.20ms 1.20ms ⚪ 0.68% 773.89µs 815.92µs 🔴 5.30% 🟢 -32%
overhead/
call/typed/16
1.62ms 1.60ms ⚪ -1.19% 1.86ms 1.86ms ⚪ -0.15% 🟢 16%
overhead/
call/untyped/0
1.63ms 1.60ms ⚪ -1.46% 1.21ms 1.22ms ⚪ 1.10% 🟢 -24%
overhead/
call/untyped/16
2.56ms 2.42ms 🟢 -5.35% 4.03ms 4.06ms ⚪ 0.70% 🟡 68%
translate/
bz2/checked/default
1.38ms 1.40ms ⚪ 1.08% 2.61ms 2.72ms 🔴 4.29% 🟡 95%
translate/
bz2/checked/fuel
1.42ms 1.44ms ⚪ 1.11% 2.75ms 2.75ms ⚪ 0.03% 🟡 91%
translate/
bz2/unchecked/default
1.12ms 1.14ms 🔴 1.59% 1.92ms 2.11ms 🔴 9.68% 🟡 85%
translate/
bz2/unchecked/fuel
1.16ms 1.18ms 🔴 1.56% 2.03ms 2.17ms 🔴 6.31% 🟡 84%
translate/
erc1155/checked/default
285.72µs 284.64µs ⚪ -0.56% 504.65µs 528.58µs 🔴 5.29% 🟡 86%
translate/
erc1155/checked/fuel
304.24µs 302.33µs ⚪ -0.48% 528.38µs 537.95µs 🔴 1.50% 🟡 78%
translate/
erc1155/unchecked/default
232.94µs 234.27µs ⚪ 0.50% 374.47µs 418.10µs 🔴 11.70% 🟡 78%
translate/
erc1155/unchecked/fuel
250.83µs 251.76µs ⚪ 0.50% 405.12µs 428.60µs 🔴 5.80% 🟡 70%
translate/
erc20/checked/default
138.37µs 138.87µs ⚪ 0.64% 244.67µs 255.69µs 🔴 4.41% 🟡 84%
translate/
erc20/checked/fuel
146.54µs 146.28µs ⚪ -0.16% 258.62µs 254.61µs ⚪ -1.24% 🟡 74%
translate/
erc20/unchecked/default
112.75µs 112.88µs ⚪ 0.22% 183.54µs 201.14µs 🔴 9.22% 🟡 78%
translate/
erc20/unchecked/fuel
120.70µs 120.50µs ⚪ -0.01% 192.46µs 201.52µs 🔴 4.49% 🟡 67%
translate/
erc721/checked/default
196.49µs 196.62µs ⚪ -0.01% 349.69µs 373.17µs 🔴 6.64% 🟡 90%
translate/
erc721/checked/fuel
206.73µs 207.03µs ⚪ 0.05% 364.37µs 371.77µs 🔴 2.15% 🟡 80%
translate/
erc721/unchecked/default
158.28µs 160.80µs 🔴 1.49% 257.27µs 288.29µs 🔴 12.01% 🟡 79%
translate/
erc721/unchecked/fuel
167.65µs 169.05µs ⚪ 0.50% 269.77µs 289.36µs 🔴 7.28% 🟡 71%
translate/
pulldown_cmark/checked/default
3.83ms 3.81ms ⚪ -0.28% 6.86ms 7.08ms 🔴 3.05% 🟡 86%
translate/
pulldown_cmark/checked/fuel
3.92ms 3.90ms ⚪ -0.10% 7.11ms 7.09ms ⚪ -0.27% 🟡 82%
translate/
pulldown_cmark/unchecked/default
3.11ms 3.15ms ⚪ 1.27% 5.01ms 5.49ms 🔴 9.50% 🟡 74%
translate/
pulldown_cmark/unchecked/fuel
3.24ms 3.23ms ⚪ -0.88% 5.27ms 5.56ms 🔴 5.80% 🟡 72%
translate/
spidermonkey/checked/default
0.00ns 0.00ns ⚪ 0.79% 0.00ns 0.00ns 🔴 3.48% 🟢 0%
translate/
spidermonkey/checked/fuel
0.00ns 0.00ns ⚪ 0.47% 0.00ns 0.00ns ⚪ 0.33% 🟢 0%
translate/
spidermonkey/unchecked/default
71.54ms 0.00ns 🔴 1.65% 0.00ns 0.00ns 🔴 9.70% 🟢 0%
translate/
spidermonkey/unchecked/fuel
0.00ns 0.00ns 🔴 1.34% 0.00ns 0.00ns 🔴 5.15% 🟢 0%
translate/
wasm_kernel/checked/default
5.13ms 5.13ms ⚪ 0.01% 9.17ms 9.51ms 🔴 3.39% 🟡 85%
translate/
wasm_kernel/checked/fuel
5.28ms 5.27ms ⚪ -0.42% 9.57ms 9.61ms ⚪ 0.25% 🟡 82%
translate/
wasm_kernel/unchecked/default
4.11ms 4.16ms 🔴 1.39% 6.77ms 7.35ms 🔴 9.01% 🟡 77%
translate/
wasm_kernel/unchecked/fuel
4.25ms 4.28ms ⚪ 0.72% 7.09ms 7.46ms 🔴 4.97% 🟡 74%

Link to pipeline

@codecov-commenter
Copy link

codecov-commenter commented Dec 5, 2023

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (4a8725e) 80.94% compared to head (0a2da2c) 80.95%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #834      +/-   ##
==========================================
+ Coverage   80.94%   80.95%   +0.01%     
==========================================
  Files         257      257              
  Lines       22461    22472      +11     
==========================================
+ Hits        18180    18192      +12     
+ Misses       4281     4280       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Robbepop Robbepop merged commit fdd9364 into master Dec 5, 2023
15 checks passed
@Robbepop Robbepop deleted the rf-fix-local-set-preservation-bug branch December 5, 2023 11:10
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.

3 participants