FuelLabs
sway
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
update contract ids
xunilrj/improve-contract-call-3
13 hours ago
update test
xunilrj/improve-contract-call-3
14 hours ago
update tests ids
xunilrj/improve-contract-call-3
14 hours ago
update test snapshot
xunilrj/improve-contract-call-3
16 hours ago
Improve Contract Call by not encoding method name (#7455) ## Description This is an optimisation of contract calls on top of https://github.com/FuelLabs/sway/pull/7440. The old version would pass a string with the method name and encode it, which is `<LEN><BYTES`. Now the compiler generates these bytes directly, avoiding encoding the method name in the first place. For that this PR creats the concept of `Literal::Binary` that does not exist in the language, yet. Would be something like `b""` in Rust. ## Improvements | Test | Before | After | Percentage | |------|--------|-------|------------| | should_pass/empty_fields_in_storage_struct (test.toml)::test_read_write_bytes | 19298 | 17533 | 9.15% | | should_pass/empty_fields_in_storage_struct (test.toml)::test_read_write_map | 14971 | 13986 | 6.58% | | should_pass/empty_fields_in_storage_struct (test.toml)::test_read_write_vec | 31061 | 29288 | 5.71% | | should_pass/language/associated_const_abi (test.toml)::test | 8789 | 7817 | 11.06% | | should_pass/language/associated_const_abi_multiple (test.toml)::test | 2421 | 2097 | 13.38% | | should_pass/language/associated_const_in_decls_of_other_constants (test.toml)::test | 870 | 709 | 18.51% | | should_pass/language/contract_caller_dynamic_address (test.toml) | 540 | 379 | 29.81% | | should_pass/language/contract_ret_intrinsic (test.toml)::test | 2133 | 1809 | 15.19% | | should_pass/language/pusha_popa_multiple_defreg (test.toml)::incorrect_pusha_popa | 819 | 624 | 23.81% | | should_pass/language/raw_identifiers (test.error_type.toml)::test | 1236 | 1075 | 13.03% | | should_pass/language/raw_identifiers (test.toml)::test | 1236 | 1075 | 13.03% | | should_pass/language/references/mutability_of_references_memcpy_bug (test.toml)::test | 1364 | 1203 | 11.80% | | should_pass/language/slice/slice_contract (test.toml)::test_success | 1338 | 1145 | 14.42% | | should_pass/language/string_slice/string_slice_contract (test.toml)::test_success | 1515 | 1322 | 12.74% | | should_pass/stdlib/storage_vec_insert (test.toml)::test_test_function | 3992 | 3831 | 4.03% | | should_pass/storage_element_key_modification (test.toml)::test_storage_key_address | 1300 | 1138 | 12.46% | | should_pass/storage_element_key_modification (test.toml)::test_storage_key_modification | 919 | 757 | 17.63% | | should_pass/storage_slot_key_calculation (test.toml)::test | 3140 | 2979 | 5.13% | | should_pass/superabi_contract_calls (test.toml)::tests | 2136 | 1812 | 15.17% | | should_pass/superabi_supertrait_same_methods (test.toml)::tests | 1097 | 936 | 14.68% | | should_pass/test_abis/abi_impl_methods_callable (test.toml)::tests | 933 | 772 | 17.26% | | should_pass/test_abis/contract_abi-auto_impl (test.toml)::tests | 933 | 772 | 17.26% | | should_pass/unit_tests/aggr_indexing (test.toml)::test1 | 6007 | 5443 | 9.39% | | should_pass/unit_tests/contract-multi-contract-calls (test.toml)::test_contract_2_call | 966 | 804 | 16.77% | | should_pass/unit_tests/contract-multi-contract-calls (test.toml)::test_contract_call | 969 | 807 | 16.72% | | should_pass/unit_tests/contract-multi-contract-calls (test.toml)::test_contract_multi_call | 1916 | 1592 | 16.91% | | should_pass/unit_tests/contract_multi_test (test.toml)::test_fail | 970 | 808 | 16.70% | | should_pass/unit_tests/contract_multi_test (test.toml)::test_success | 968 | 806 | 16.74% | | should_pass/unit_tests/script-contract-calls (test.toml)::test_contract_call | 931 | 736 | 20.95% | | should_pass/unit_tests/workspace_test (test.toml)::test_fail | 970 | 808 | 16.70% | | should_pass/unit_tests/workspace_test (test.toml)::test_success | 969 | 807 | 16.72% | ## Failed Test Only now I realized that the test for array of size zero `[u64; 0]` is not working. As this is not a useful case, I will solve it in another PR. ## Checklist - [x] I have linked to any relevant issues. - [x] I have commented my code, particularly in hard-to-understand areas. - [ ] I have updated the documentation where relevant (API docs, the reference, and the Sway book). - [ ] If my change requires substantial documentation changes, I have [requested support from the DevRel team](https://github.com/FuelLabs/devrel-requests/issues/new/choose) - [x] I have added tests that prove my fix is effective or that my feature works. - [ ] I have added (or requested a maintainer to add) the necessary `Breaking*` or `New Feature` labels where relevant. - [x] I have done my best to ensure that my PR adheres to [the Fuel Labs Code Review Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md). - [x] I have requested a review from the relevant team or maintainers.
master
22 hours ago
PR adjustments
xunilrj/improve-contract-call-2
23 hours ago
Merge branch 'master' into vaivaswatha/memcpy_prop_new
vaivaswatha/memcpy_prop_new
2 days ago
Merge branch 'master' into vaivaswatha/sroa_gep_fix
vaivaswatha/sroa_gep_fix
2 days ago
Active Branches
Improve method selector on contracts
last run
13 hours ago
#7458
CodSpeed Performance Gauge
0%
Add a new memcpy propagation pass
last run
2 days ago
#7443
CodSpeed Performance Gauge
0%
SROA: Do not generate GEPs when direct address is available
last run
2 days ago
#7457
CodSpeed Performance Gauge
0%
© 2025 CodSpeed Technology
Home
Terms
Privacy
Docs