Skip to content

Commit 1275d31

Browse files
committed
refactor: Optimize for loop in _diamondCut function for better performance
1 parent fb79b82 commit 1275d31

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

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)