From 0abf18f305e0066279231e930889cf8ae30a673f Mon Sep 17 00:00:00 2001 From: Molly Date: Wed, 12 Jul 2023 16:07:35 -0400 Subject: [PATCH] Remove duplicated SLOAD in Arrays.findUpperBound (#4442) Co-authored-by: Hadrien Croubois Co-authored-by: Francisco Giordano --- .changeset/fluffy-countries-buy.md | 5 +++++ contracts/utils/Arrays.sol | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/fluffy-countries-buy.md diff --git a/.changeset/fluffy-countries-buy.md b/.changeset/fluffy-countries-buy.md new file mode 100644 index 000000000..0cc7de370 --- /dev/null +++ b/.changeset/fluffy-countries-buy.md @@ -0,0 +1,5 @@ +--- +'openzeppelin-solidity': minor +--- + +`Arrays`: Optimize `findUpperBound` by removing redundant SLOAD. diff --git a/contracts/utils/Arrays.sol b/contracts/utils/Arrays.sol index 7dbc86fdd..0c16b07cf 100644 --- a/contracts/utils/Arrays.sol +++ b/contracts/utils/Arrays.sol @@ -22,13 +22,13 @@ library Arrays { * repeated elements. */ function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { - if (array.length == 0) { - return 0; - } - uint256 low = 0; uint256 high = array.length; + if (high == 0) { + return 0; + } + while (low < high) { uint256 mid = Math.average(low, high);