matter-labs / era-compiler-llvm

ZKsync fork of the LLVM framework.
Other
33 stars 16 forks source link

[EraVM] Use full keccak256 hash value for linker symbols #733

Closed PavelKopyl closed 3 weeks ago

PavelKopyl commented 3 weeks ago

EF compiler uses only 18 bytes of the keccak256 hash value when hashing linker symbols. Probably it's done to limit size of unlinked contracts by increasing collision probability. But this doesn't seem to make a big sense, so lets use full hash values. Anyway, this doesn't affect size of executable bytecode.

Code Review Checklist

Purpose

Ticket Number

Requirements

Implementation

Logic Errors and Bugs

Error Handling and Logging

Maintainability

Dependencies

Security

Performance

Testing and Testability

Readability

Documentation

Best Practices

Experts' Opinion

github-actions[bot] commented 3 weeks ago
╔═╡ Size (-%) ╞════════════════╡ All M3B3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Cycles (-%) ╞══════════════╡ All M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞════════════════╡ All M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞════════════════╡ All M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╚═══════════════════════════════════════════╝

╔═╡ Size (-%) ╞════════════════╡ All MzB3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Cycles (-%) ╞══════════════╡ All MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞════════════════╡ All MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞════════════════╡ All MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╚═══════════════════════════════════════════╝

╔═╡ Size (-%) ╞═════╡ EVMInterpreter M3B3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                                 NaN ║
╠═╡ Cycles (-%) ╞═══╡ EVMInterpreter M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞═════╡ EVMInterpreter M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞═════╡ EVMInterpreter M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs/gas ╞══════╡ EVMInterpreter M3B3 ╞═╣
║ ADD                                28.083 ║
║ MUL                                16.850 ║
║ SUB                                28.083 ║
║ DIV                                19.250 ║
║ SDIV                               36.050 ║
║ MOD                                19.250 ║
║ SMOD                               33.650 ║
║ ADDMOD                             18.156 ║
║ MULMOD                             16.656 ║
║ EXP                                 6.904 ║
║ SIGNEXTEND                         19.250 ║
║ LT                                 32.083 ║
║ GT                                 32.083 ║
║ SLT                                54.083 ║
║ SGT                                54.083 ║
║ EQ                                 32.083 ║
║ ISZERO                             27.750 ║
║ AND                                28.083 ║
║ OR                                 28.083 ║
║ XOR                                28.083 ║
║ NOT                                23.750 ║
║ BYTE                               38.083 ║
║ SHL                                34.083 ║
║ SHR                                34.083 ║
║ SAR                                52.083 ║
║ SGT                                54.083 ║
║ SHA3                               25.073 ║
║ ADDRESS                            41.812 ║
║ BALANCE                            20.924 ║
║ ORIGIN                           1351.625 ║
║ CALLER                             41.812 ║
║ CALLVALUE                          41.812 ║
║ CALLDATALOAD                       26.083 ║
║ CALLDATASIZE                       42.125 ║
║ CALLDATACOPY                       49.492 ║
║ CODESIZE                           45.625 ║
║ CODECOPY                           62.456 ║
║ GASPRICE                         1348.438 ║
║ EXTCODESIZE                         3.635 ║
║ EXTCODECOPY                         3.723 ║
║ RETURNDATASIZE                     43.500 ║
║ RETURNDATACOPY                     44.556 ║
║ EXTCODEHASH                         4.651 ║
║ BLOCKHASH                         238.819 ║
║ COINBASE                         1348.625 ║
║ TIMESTAMP                        1342.625 ║
║ NUMBER                           1342.625 ║
║ PREVRANDAO                       1342.625 ║
║ GASLIMIT                         1348.625 ║
║ CHAINID                          1336.625 ║
║ SELFBALANCE                       639.250 ║
║ BASEFEE                          1342.625 ║
║ POP                                39.125 ║
║ MLOAD                              43.667 ║
║ MSTORE                             55.248 ║
║ MSTORE8                            64.716 ║
║ SLOAD                              19.044 ║
║ SSTORE                              4.467 ║
║ JUMP                               15.667 ║
║ JUMPI                              15.636 ║
║ PC                                 42.312 ║
║ MSIZE                              48.812 ║
║ GAS                                42.312 ║
║ JUMPDEST                           59.625 ║
║ PUSH0                              42.312 ║
║ PUSH1                              37.958 ║
║ PUSH2                              43.375 ║
║ PUSH4                              46.208 ║
║ PUSH5                              47.625 ║
║ PUSH6                              49.042 ║
║ PUSH7                              50.458 ║
║ PUSH8                              51.875 ║
║ PUSH9                              53.292 ║
║ PUSH10                             54.708 ║
║ PUSH11                             56.125 ║
║ PUSH12                             57.542 ║
║ PUSH13                             58.958 ║
║ PUSH14                             60.375 ║
║ PUSH15                             61.792 ║
║ PUSH16                             63.208 ║
║ PUSH17                             64.625 ║
║ PUSH18                             66.042 ║
║ PUSH19                             67.458 ║
║ PUSH20                             68.875 ║
║ PUSH21                             70.292 ║
║ PUSH22                             71.708 ║
║ PUSH23                             73.125 ║
║ PUSH24                             74.542 ║
║ PUSH25                             75.958 ║
║ PUSH26                             77.375 ║
║ PUSH27                             78.792 ║
║ PUSH28                             80.208 ║
║ PUSH29                             81.625 ║
║ PUSH30                             83.042 ║
║ PUSH31                             84.458 ║
║ PUSH32                             85.875 ║
║ DUP1                               26.083 ║
║ DUP2                               32.417 ║
║ DUP3                               32.417 ║
║ DUP4                               32.417 ║
║ DUP5                               32.417 ║
║ DUP6                               32.417 ║
║ DUP7                               32.417 ║
║ DUP8                               32.417 ║
║ DUP9                               32.417 ║
║ DUP10                              32.417 ║
║ DUP11                              32.417 ║
║ DUP12                              32.417 ║
║ DUP13                              32.417 ║
║ DUP14                              32.417 ║
║ DUP15                              32.417 ║
║ DUP16                              32.417 ║
║ SWAP1                              32.417 ║
║ SWAP2                              32.417 ║
║ SWAP3                              32.417 ║
║ SWAP4                              32.417 ║
║ SWAP5                              32.417 ║
║ SWAP6                              32.417 ║
║ SWAP7                              32.417 ║
║ SWAP8                              32.417 ║
║ SWAP9                              32.417 ║
║ SWAP10                             32.417 ║
║ SWAP11                             32.417 ║
║ SWAP12                             32.417 ║
║ SWAP13                             32.417 ║
║ SWAP14                             32.417 ║
║ SWAP15                             32.417 ║
║ SWAP16                             32.417 ║
║ CALL                               34.125 ║
║ STATICCALL                         34.095 ║
║ DELEGATECALL                       33.175 ║
║ CREATE                              3.713 ║
║ CREATE2                             5.009 ║
║ RETURN                              1.000 ║
║ REVERT                              1.000 ║
╠═╡ Ergs/gas (-%) ╞═╡ EVMInterpreter M3B3 ╞═╣
╚═══════════════════════════════════════════╝

╔═╡ Size (-%) ╞═════╡ EVMInterpreter MzB3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                                 NaN ║
╠═╡ Cycles (-%) ╞═══╡ EVMInterpreter MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞═════╡ EVMInterpreter MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞═════╡ EVMInterpreter MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╚═══════════════════════════════════════════╝

╔═╡ Size (-%) ╞════════╡ Precompiles M3B3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Cycles (-%) ╞══════╡ Precompiles M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞════════╡ Precompiles M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞════════╡ Precompiles M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                                 NaN ║
╚═══════════════════════════════════════════╝

╔═╡ Size (-%) ╞════════╡ Precompiles MzB3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Cycles (-%) ╞══════╡ Precompiles MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞════════╡ Precompiles MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞════════╡ Precompiles MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                                 NaN ║
╚═══════════════════════════════════════════╝

╔═╡ Size (-%) ╞══════════╡ Real life M3B3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Cycles (-%) ╞════════╡ Real life M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞══════════╡ Real life M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞══════════╡ Real life M3B3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                                 NaN ║
╚═══════════════════════════════════════════╝

╔═╡ Size (-%) ╞══════════╡ Real life MzB3 ╞═╗
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Cycles (-%) ╞════════╡ Real life MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠═╡ Ergs (-%) ╞══════════╡ Real life MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                               0.000 ║
╠══╡ Gas (-%) ╞══════════╡ Real life MzB3 ╞═╣
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                                 NaN ║
╚═══════════════════════════════════════════╝