From fd7dd0d21688309fe2c98ff080c14db9abea57d9 Mon Sep 17 00:00:00 2001 From: Mikhail <16622558+mmv08@users.noreply.github.com> Date: Thu, 22 Feb 2024 15:22:11 +0100 Subject: [PATCH] Use returndatasize opcode instead of caching it in a variable --- contracts/core/EntryPoint.sol | 5 ++--- reports/gas-checker.txt | 40 +++++++++++++++++------------------ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/contracts/core/EntryPoint.sol b/contracts/core/EntryPoint.sol index 44501524..8775782b 100644 --- a/contracts/core/EntryPoint.sol +++ b/contracts/core/EntryPoint.sol @@ -114,9 +114,8 @@ contract EntryPoint is IEntryPoint, StakeManager, NonceManager, ReentrancyGuard, if (!success) { bytes32 innerRevertCode; assembly ("memory-safe") { - let len := returndatasize() - if eq(32,len) { - returndatacopy(0, 0, 32) + if eq(32, returndatasize()) { + returndatacopy(0, 0, returndatasize()) innerRevertCode := mload(0) } } diff --git a/reports/gas-checker.txt b/reports/gas-checker.txt index 16e5f434..8e5d9ba4 100644 --- a/reports/gas-checker.txt +++ b/reports/gas-checker.txt @@ -12,44 +12,44 @@ ║ │ │ │ (delta for │ (compared to ║ ║ │ │ │ one UserOp) │ account.exec()) ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple │ 1 │ 79994 │ │ ║ +║ simple │ 1 │ 79958 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple - diff from previous │ 2 │ │ 42192 │ 13213 ║ +║ simple - diff from previous │ 2 │ │ 42156 │ 13177 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple │ 10 │ 459909 │ │ ║ +║ simple │ 10 │ 459549 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple - diff from previous │ 11 │ │ 42295 │ 13316 ║ +║ simple - diff from previous │ 11 │ │ 42211 │ 13232 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple paymaster │ 1 │ 86113 │ │ ║ +║ simple paymaster │ 1 │ 86060 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple paymaster with diff │ 2 │ │ 41072 │ 12093 ║ +║ simple paymaster with diff │ 2 │ │ 40971 │ 11992 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple paymaster │ 10 │ 455732 │ │ ║ +║ simple paymaster │ 10 │ 454974 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ simple paymaster with diff │ 11 │ │ 41040 │ 12061 ║ +║ simple paymaster with diff │ 11 │ │ 40975 │ 11996 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ big tx 5k │ 1 │ 181038 │ │ ║ +║ big tx 5k │ 1 │ 181002 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ big tx - diff from previous │ 2 │ │ 142678 │ 17454 ║ +║ big tx - diff from previous │ 2 │ │ 142666 │ 17442 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ big tx 5k │ 10 │ 1465467 │ │ ║ +║ big tx 5k │ 10 │ 1465047 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ big tx - diff from previous │ 11 │ │ 142686 │ 17462 ║ +║ big tx - diff from previous │ 11 │ │ 142710 │ 17486 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ paymaster+postOp │ 1 │ 87736 │ │ ║ +║ paymaster+postOp │ 1 │ 87725 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ paymaster+postOp with diff │ 2 │ │ 42659 │ 13680 ║ +║ paymaster+postOp with diff │ 2 │ │ 42636 │ 13657 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ paymaster+postOp │ 10 │ 471826 │ │ ║ +║ paymaster+postOp │ 10 │ 471608 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ paymaster+postOp with diff │ 11 │ │ 42692 │ 13713 ║ +║ paymaster+postOp with diff │ 11 │ │ 42681 │ 13702 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ token paymaster │ 1 │ 128765 │ │ ║ +║ token paymaster │ 1 │ 128754 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ token paymaster with diff │ 2 │ │ 66398 │ 37419 ║ +║ token paymaster with diff │ 2 │ │ 66351 │ 37372 ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ token paymaster │ 10 │ 726504 │ │ ║ +║ token paymaster │ 10 │ 726214 │ │ ║ ╟────────────────────────────────┼───────┼───────────────┼────────────────┼─────────────────────╢ -║ token paymaster with diff │ 11 │ │ 66454 │ 37475 ║ +║ token paymaster with diff │ 11 │ │ 66467 │ 37488 ║ ╚════════════════════════════════╧═══════╧═══════════════╧════════════════╧═════════════════════╝