Skip to content

Commit daf03ed

Browse files
authored
Merge pull request #4 from DADADAVE80:fix/optimize-diamond-cut
Refactor Diamond.sol for performance and cleanliness
2 parents a03ad71 + 1275d31 commit daf03ed

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

src/Diamond.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ pragma solidity ^0.8.4;
33

44
import {DiamondStorage, LibDiamond} from "@diamond/libraries/LibDiamond.sol";
55
import {LibOwnableRoles} from "@diamond/libraries/LibOwnableRoles.sol";
6-
import {DiamondArgs, FacetCut, FacetCutAction} from "@diamond/libraries/types/DiamondTypes.sol";
6+
import {DiamondArgs, FacetCut} from "@diamond/libraries/types/DiamondTypes.sol";
77
import {FunctionDoesNotExist} from "@diamond/libraries/errors/DiamondErrors.sol";
88

99
/// @notice Implements EIP-2535 Diamond proxy pattern, allowing dynamic addition, replacement, and removal of facets

src/libraries/LibDiamond.sol

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ library LibDiamond {
8686
function _diamondCut(FacetCut[] memory _facetCuts, address _init, bytes memory _calldata) internal {
8787
uint256 facetCutsLength = _facetCuts.length;
8888
if (facetCutsLength == 0) revert NoFacetsInDiamondCut();
89-
for (uint256 facetIndex; facetIndex < facetCutsLength; facetIndex++) {
89+
for (uint256 facetIndex; facetIndex < facetCutsLength;) {
9090
FacetCutAction action = _facetCuts[facetIndex].action;
9191
if (action == FacetCutAction.Add) {
9292
_addFunctions(_facetCuts[facetIndex].facetAddress, _facetCuts[facetIndex].functionSelectors);
@@ -97,6 +97,9 @@ library LibDiamond {
9797
} else {
9898
revert IncorrectFacetCutAction(uint8(action));
9999
}
100+
unchecked {
101+
++facetIndex;
102+
}
100103
}
101104
emit DiamondCut(_facetCuts, _init, _calldata);
102105
_initializeDiamondCut(_init, _calldata);

0 commit comments

Comments
 (0)