Skip to content

Commit d8bbd34

Browse files
authored
Update declaration of memory safe assembly blocks (#5172)
1 parent 1e7ca3e commit d8bbd34

32 files changed

+91
-182
lines changed

contracts/metatx/ERC2771Forwarder.sol

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,7 @@ contract ERC2771Forwarder is EIP712, Nonces {
309309
bool success;
310310
uint256 returnSize;
311311
uint256 returnValue;
312-
/// @solidity memory-safe-assembly
313-
assembly {
312+
assembly ("memory-safe") {
314313
// Perform the staticcall and save the result in the scratch space.
315314
// | Location | Content | Content (Hex) |
316315
// |-----------|----------|--------------------------------------------------------------------|
@@ -362,8 +361,7 @@ contract ERC2771Forwarder is EIP712, Nonces {
362361
// We explicitly trigger invalid opcode to consume all gas and bubble-up the effects, since
363362
// neither revert or assert consume all gas since Solidity 0.8.20
364363
// https://docs.soliditylang.org/en/v0.8.20/control-structures.html#panic-via-assert-and-error-via-require
365-
/// @solidity memory-safe-assembly
366-
assembly {
364+
assembly ("memory-safe") {
367365
invalid()
368366
}
369367
}

contracts/proxy/Clones.sol

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ library Clones {
3737
if (address(this).balance < value) {
3838
revert Errors.InsufficientBalance(address(this).balance, value);
3939
}
40-
/// @solidity memory-safe-assembly
41-
assembly {
40+
assembly ("memory-safe") {
4241
// Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
4342
// of the `implementation` address with the bytecode before the address.
4443
mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
@@ -77,8 +76,7 @@ library Clones {
7776
if (address(this).balance < value) {
7877
revert Errors.InsufficientBalance(address(this).balance, value);
7978
}
80-
/// @solidity memory-safe-assembly
81-
assembly {
79+
assembly ("memory-safe") {
8280
// Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
8381
// of the `implementation` address with the bytecode before the address.
8482
mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
@@ -99,8 +97,7 @@ library Clones {
9997
bytes32 salt,
10098
address deployer
10199
) internal pure returns (address predicted) {
102-
/// @solidity memory-safe-assembly
103-
assembly {
100+
assembly ("memory-safe") {
104101
let ptr := mload(0x40)
105102
mstore(add(ptr, 0x38), deployer)
106103
mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)

contracts/token/ERC1155/ERC1155.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,8 +381,7 @@ abstract contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI, IER
381381
uint256 element1,
382382
uint256 element2
383383
) private pure returns (uint256[] memory array1, uint256[] memory array2) {
384-
/// @solidity memory-safe-assembly
385-
assembly {
384+
assembly ("memory-safe") {
386385
// Load the free memory pointer
387386
array1 := mload(0x40)
388387
// Set array length to 1

contracts/token/ERC1155/utils/ERC1155Utils.sol

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ library ERC1155Utils {
3838
// non-IERC1155Receiver implementer
3939
revert IERC1155Errors.ERC1155InvalidReceiver(to);
4040
} else {
41-
/// @solidity memory-safe-assembly
42-
assembly {
41+
assembly ("memory-safe") {
4342
revert(add(32, reason), mload(reason))
4443
}
4544
}
@@ -76,8 +75,7 @@ library ERC1155Utils {
7675
// non-IERC1155Receiver implementer
7776
revert IERC1155Errors.ERC1155InvalidReceiver(to);
7877
} else {
79-
/// @solidity memory-safe-assembly
80-
assembly {
78+
assembly ("memory-safe") {
8179
revert(add(32, reason), mload(reason))
8280
}
8381
}

contracts/token/ERC20/utils/ERC1363Utils.sol

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ library ERC1363Utils {
5151
if (reason.length == 0) {
5252
revert ERC1363InvalidReceiver(to);
5353
} else {
54-
/// @solidity memory-safe-assembly
55-
assembly {
54+
assembly ("memory-safe") {
5655
revert(add(32, reason), mload(reason))
5756
}
5857
}
@@ -86,8 +85,7 @@ library ERC1363Utils {
8685
if (reason.length == 0) {
8786
revert ERC1363InvalidSpender(spender);
8887
} else {
89-
/// @solidity memory-safe-assembly
90-
assembly {
88+
assembly ("memory-safe") {
9189
revert(add(32, reason), mload(reason))
9290
}
9391
}

contracts/token/ERC721/utils/ERC721Utils.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ library ERC721Utils {
3737
// non-IERC721Receiver implementer
3838
revert IERC721Errors.ERC721InvalidReceiver(to);
3939
} else {
40-
/// @solidity memory-safe-assembly
41-
assembly {
40+
assembly ("memory-safe") {
4241
revert(add(32, reason), mload(reason))
4342
}
4443
}

contracts/utils/Address.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ library Address {
139139
// Look for revert reason and bubble it up if present
140140
if (returndata.length > 0) {
141141
// The easiest way to bubble the revert reason is using memory via assembly
142-
/// @solidity memory-safe-assembly
143-
assembly {
142+
assembly ("memory-safe") {
144143
let returndata_size := mload(returndata)
145144
revert(add(32, returndata), returndata_size)
146145
}

contracts/utils/Arrays.sol

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,7 @@ library Arrays {
134134
* @dev Pointer to the memory location of the first element of `array`.
135135
*/
136136
function _begin(uint256[] memory array) private pure returns (uint256 ptr) {
137-
/// @solidity memory-safe-assembly
138-
assembly {
137+
assembly ("memory-safe") {
139138
ptr := add(array, 0x20)
140139
}
141140
}
@@ -377,8 +376,7 @@ library Arrays {
377376
*/
378377
function unsafeAccess(address[] storage arr, uint256 pos) internal pure returns (StorageSlot.AddressSlot storage) {
379378
bytes32 slot;
380-
/// @solidity memory-safe-assembly
381-
assembly {
379+
assembly ("memory-safe") {
382380
slot := arr.slot
383381
}
384382
return slot.deriveArray().offset(pos).getAddressSlot();
@@ -391,8 +389,7 @@ library Arrays {
391389
*/
392390
function unsafeAccess(bytes32[] storage arr, uint256 pos) internal pure returns (StorageSlot.Bytes32Slot storage) {
393391
bytes32 slot;
394-
/// @solidity memory-safe-assembly
395-
assembly {
392+
assembly ("memory-safe") {
396393
slot := arr.slot
397394
}
398395
return slot.deriveArray().offset(pos).getBytes32Slot();
@@ -405,8 +402,7 @@ library Arrays {
405402
*/
406403
function unsafeAccess(uint256[] storage arr, uint256 pos) internal pure returns (StorageSlot.Uint256Slot storage) {
407404
bytes32 slot;
408-
/// @solidity memory-safe-assembly
409-
assembly {
405+
assembly ("memory-safe") {
410406
slot := arr.slot
411407
}
412408
return slot.deriveArray().offset(pos).getUint256Slot();
@@ -451,8 +447,7 @@ library Arrays {
451447
* WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased.
452448
*/
453449
function unsafeSetLength(address[] storage array, uint256 len) internal {
454-
/// @solidity memory-safe-assembly
455-
assembly {
450+
assembly ("memory-safe") {
456451
sstore(array.slot, len)
457452
}
458453
}
@@ -463,8 +458,7 @@ library Arrays {
463458
* WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased.
464459
*/
465460
function unsafeSetLength(bytes32[] storage array, uint256 len) internal {
466-
/// @solidity memory-safe-assembly
467-
assembly {
461+
assembly ("memory-safe") {
468462
sstore(array.slot, len)
469463
}
470464
}
@@ -475,8 +469,7 @@ library Arrays {
475469
* WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased.
476470
*/
477471
function unsafeSetLength(uint256[] storage array, uint256 len) internal {
478-
/// @solidity memory-safe-assembly
479-
assembly {
472+
assembly ("memory-safe") {
480473
sstore(array.slot, len)
481474
}
482475
}

contracts/utils/Base64.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ library Base64 {
5555

5656
string memory result = new string(resultLength);
5757

58-
/// @solidity memory-safe-assembly
59-
assembly {
58+
assembly ("memory-safe") {
6059
// Prepare the lookup table (skip the first "length" byte)
6160
let tablePtr := add(table, 1)
6261

contracts/utils/Create2.sol

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ library Create2 {
4141
if (bytecode.length == 0) {
4242
revert Create2EmptyBytecode();
4343
}
44-
/// @solidity memory-safe-assembly
45-
assembly {
44+
assembly ("memory-safe") {
4645
addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)
4746
// if no address was created, and returndata is not empty, bubble revert
4847
if and(iszero(addr), not(iszero(returndatasize()))) {
@@ -69,8 +68,7 @@ library Create2 {
6968
* `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.
7069
*/
7170
function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address addr) {
72-
/// @solidity memory-safe-assembly
73-
assembly {
71+
assembly ("memory-safe") {
7472
let ptr := mload(0x40) // Get free memory pointer
7573

7674
// | | ↓ ptr ... ↓ ptr + 0x0B (start) ... ↓ ptr + 0x20 ... ↓ ptr + 0x40 ... |

0 commit comments

Comments
 (0)