Skip to content

Commit 9710a0a

Browse files
authored
♻️ Send ETH refactor (ethereum#631)
1 parent d6b02fd commit 9710a0a

File tree

3 files changed

+67
-74
lines changed

3 files changed

+67
-74
lines changed

.gas-snapshot

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1636)
1212
Base64Test:testBase64WordBoundary() (gas: 12511)
1313
Base64Test:test__codesize() (gas: 7857)
1414
CREATE3Test:testDeployERC20() (gas: 761674)
15-
CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 843070, ~: 853055)
15+
CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 841479, ~: 853055)
1616
CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 609)
1717
CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96899273)
18-
CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 256, μ: 96880122, ~: 96880005)
18+
CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 256, μ: 96880132, ~: 96880005)
1919
CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889159)
20-
CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 256, μ: 96881050, ~: 96881007)
20+
CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 256, μ: 96881043, ~: 96881007)
2121
CREATE3Test:test__codesize() (gas: 15308)
2222
DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 256, μ: 4034, ~: 4074)
2323
DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 256, μ: 3978, ~: 3932)
@@ -222,15 +222,15 @@ ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 256, μ: 108118, ~: 104824)
222222
ERC2981Test:test__codesize() (gas: 8419)
223223
ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16371)
224224
ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 89884)
225-
ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 3341, ~: 3201)
225+
ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 3345, ~: 3311)
226226
ERC4626Test:testMetadata() (gas: 15439)
227227
ERC4626Test:testMintWithNoApprovalReverts() (gas: 16345)
228228
ERC4626Test:testMintZero() (gas: 54317)
229229
ERC4626Test:testMultipleMintDepositRedeemWithdraw() (gas: 425667)
230230
ERC4626Test:testRedeemWithNoShareAmountReverts() (gas: 10918)
231231
ERC4626Test:testRedeemWithNotEnoughShareAmountReverts() (gas: 142915)
232-
ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 256, μ: 202683, ~: 202694)
233-
ERC4626Test:testSingleMintRedeem(uint128) (runs: 256, μ: 201604, ~: 201615)
232+
ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 256, μ: 202684, ~: 202694)
233+
ERC4626Test:testSingleMintRedeem(uint128) (runs: 256, μ: 201605, ~: 201615)
234234
ERC4626Test:testTryGetAssetDecimals() (gas: 30483816)
235235
ERC4626Test:testUseVirtualShares() (gas: 2441768)
236236
ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 296189)
@@ -502,7 +502,7 @@ LibCloneTest:testCloneDeterministicRevertsIfAddressAlreadyUsed() (gas: 96882825)
502502
LibCloneTest:testCloneWithImmutableArgs() (gas: 120581)
503503
LibCloneTest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 256, μ: 981643, ~: 970078)
504504
LibCloneTest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97305784)
505-
LibCloneTest:testStartsWithCaller(uint256) (runs: 256, μ: 28136, ~: 28382)
505+
LibCloneTest:testStartsWithCaller(uint256) (runs: 256, μ: 28143, ~: 28382)
506506
LibCloneTest:test__codesize() (gas: 15743)
507507
LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 256, μ: 499, ~: 499)
508508
LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775)
@@ -857,16 +857,16 @@ SafeCastLibTest:testSafeCastToUint(uint256) (runs: 256, μ: 4198, ~: 3351)
857857
SafeCastLibTest:testSafeCastToUint256(int256) (runs: 256, μ: 1285, ~: 432)
858858
SafeCastLibTest:testSafeCastToUintBench() (gas: 326306)
859859
SafeCastLibTest:test__codesize() (gas: 16001)
860-
SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 256, μ: 107372, ~: 123373)
860+
SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 256, μ: 108251, ~: 123373)
861861
SafeTransferLibTest:testApproveWithMissingReturn() (gas: 31945)
862862
SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 256, μ: 31248, ~: 32104)
863863
SafeTransferLibTest:testApproveWithNonContract() (gas: 2989)
864-
SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 256, μ: 3524, ~: 3536)
865-
SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 256, μ: 79648, ~: 81618)
864+
SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 256, μ: 3523, ~: 3536)
865+
SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 256, μ: 77983, ~: 59187)
866866
SafeTransferLibTest:testApproveWithRetry() (gas: 768380)
867-
SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 256, μ: 766825, ~: 768524)
867+
SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 256, μ: 766714, ~: 768524)
868868
SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990)
869-
SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 256, μ: 3521, ~: 3533)
869+
SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 256, μ: 3520, ~: 3533)
870870
SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 9515)
871871
SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 9652, ~: 9652)
872872
SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 9419)
@@ -881,58 +881,58 @@ SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 256, μ
881881
SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7830)
882882
SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 256, μ: 39521, ~: 40437)
883883
SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511304)
884-
SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 256, μ: 528882, ~: 570828)
884+
SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 256, μ: 533462, ~: 570828)
885885
SafeTransferLibTest:testTransferAllETH() (gas: 34598)
886-
SafeTransferLibTest:testTransferAllETH(address) (runs: 256, μ: 34786, ~: 35018)
886+
SafeTransferLibTest:testTransferAllETH(address) (runs: 256, μ: 34671, ~: 35018)
887887
SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10788)
888888
SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10898, ~: 10898)
889889
SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33092)
890-
SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 56508, ~: 56508)
890+
SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 56507, ~: 56508)
891891
SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 30735)
892892
SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 256, μ: 42114, ~: 42114)
893893
SafeTransferLibTest:testTransferETH() (gas: 34600)
894-
SafeTransferLibTest:testTransferETH(address,uint256) (runs: 256, μ: 33440, ~: 35250)
894+
SafeTransferLibTest:testTransferETH(address,uint256) (runs: 256, μ: 33698, ~: 35250)
895895
SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10846)
896-
SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10546, ~: 10928)
897-
SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 256, μ: 880068, ~: 782608)
898-
SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 670073)
899-
SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 256, μ: 745109, ~: 669563)
896+
SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10545, ~: 10928)
897+
SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 256, μ: 850929, ~: 782175)
898+
SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 669607)
899+
SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 256, μ: 778082, ~: 669069)
900900
SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3022)
901901
SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 256, μ: 3670, ~: 3694)
902-
SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 256, μ: 798677, ~: 719710)
903-
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 634862)
904-
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 256, μ: 774598, ~: 635391)
905-
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 635071)
906-
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 256, μ: 747085, ~: 635224)
907-
SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 669842)
908-
SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 256, μ: 773094, ~: 670375)
909-
SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 256, μ: 761287, ~: 635329)
910-
SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 628723)
911-
SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 256, μ: 755856, ~: 628722)
912-
SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 667611)
913-
SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 757610, ~: 667323)
914-
SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 256, μ: 823816, ~: 747513)
915-
SafeTransferLibTest:testTransferWithMissingReturn() (gas: 655488)
916-
SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 256, μ: 758503, ~: 656037)
902+
SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 256, μ: 864444, ~: 719174)
903+
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 634463)
904+
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 256, μ: 729540, ~: 634883)
905+
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 634672)
906+
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 256, μ: 793115, ~: 634825)
907+
SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 669442)
908+
SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 256, μ: 769331, ~: 669976)
909+
SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 256, μ: 738529, ~: 634863)
910+
SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 628282)
911+
SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 256, μ: 746497, ~: 628256)
912+
SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 667145)
913+
SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 722510, ~: 666841)
914+
SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 256, μ: 815410, ~: 747180)
915+
SafeTransferLibTest:testTransferWithMissingReturn() (gas: 655022)
916+
SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 256, μ: 753603, ~: 655637)
917917
SafeTransferLibTest:testTransferWithNonContract() (gas: 2988)
918-
SafeTransferLibTest:testTransferWithNonContract(address,address,uint256) (runs: 256, μ: 3545, ~: 3557)
919-
SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 256, μ: 821948, ~: 723111)
920-
SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 631993)
921-
SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 784941, ~: 632532)
922-
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 632604)
923-
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 746111, ~: 632323)
924-
SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 655955)
925-
SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 256, μ: 775940, ~: 656483)
926-
SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 725766, ~: 632399)
927-
SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 631861)
928-
SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 256, μ: 728068, ~: 632357)
929-
SafeTransferLibTest:testTransferWithStandardERC20() (gas: 656537)
930-
SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 256, μ: 686408, ~: 656211)
918+
SafeTransferLibTest:testTransferWithNonContract(address,address,uint256) (runs: 256, μ: 3544, ~: 3557)
919+
SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 256, μ: 781869, ~: 711689)
920+
SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 631527)
921+
SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 809715, ~: 632011)
922+
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 632163)
923+
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 760800, ~: 631881)
924+
SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 655448)
925+
SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 256, μ: 745098, ~: 655984)
926+
SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 765515, ~: 631957)
927+
SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 631462)
928+
SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 256, μ: 771071, ~: 632003)
929+
SafeTransferLibTest:testTransferWithStandardERC20() (gas: 656029)
930+
SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 256, μ: 679142, ~: 655811)
931931
SafeTransferLibTest:testTryTransferAllETH() (gas: 148698)
932932
SafeTransferLibTest:testTryTransferETH() (gas: 148745)
933933
SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537083)
934934
SafeTransferLibTest:testTryTransferETHWithNoStorageWrites() (gas: 192518)
935-
SafeTransferLibTest:test__codesize() (gas: 37518)
935+
SafeTransferLibTest:test__codesize() (gas: 37503)
936936
SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3919)
937937
SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 54789, ~: 46781)
938938
SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21179)
@@ -948,15 +948,15 @@ SignatureCheckerLibTest:testSignatureCheckerOnWalletWithZeroAddressSigner() (gas
948948
SignatureCheckerLibTest:test__codesize() (gas: 9769)
949949
SoladyTest:test__codesize() (gas: 1102)
950950
TestPlus:test__codesize() (gas: 406)
951-
WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1807)
951+
WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1831)
952952
WETHInvariants:test__codesize() (gas: 6007)
953953
WETHTest:testDeposit() (gas: 68090)
954-
WETHTest:testDeposit(uint256) (runs: 256, μ: 65717, ~: 68384)
954+
WETHTest:testDeposit(uint256) (runs: 256, μ: 65903, ~: 68384)
955955
WETHTest:testFallbackDeposit() (gas: 67796)
956-
WETHTest:testFallbackDeposit(uint256) (runs: 256, μ: 65378, ~: 68045)
956+
WETHTest:testFallbackDeposit(uint256) (runs: 256, μ: 65564, ~: 68045)
957957
WETHTest:testMetadata() (gas: 10098)
958958
WETHTest:testPartialWithdraw() (gas: 79566)
959959
WETHTest:testWithdraw() (gas: 59332)
960-
WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 76930, ~: 80326)
960+
WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 76905, ~: 80326)
961961
WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 93923)
962962
WETHTest:test__codesize() (gas: 11079)

src/tokens/WETH.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ contract WETH is ERC20 {
7575
mstore(0x00, amount)
7676
log2(0x00, 0x20, _WITHDRAWAL_EVENT_SIGNATURE, caller())
7777
// Transfer the ETH and check if it succeeded or not.
78-
if iszero(call(gas(), caller(), amount, gas(), 0x00, gas(), 0x00)) {
78+
if iszero(call(gas(), caller(), amount, codesize(), 0x00, codesize(), 0x00)) {
7979
mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.
8080
revert(0x1c, 0x04)
8181
}

0 commit comments

Comments
 (0)