Forráskód Böngészése

Reduce gas in `log256` (#3745)

Tom French 3 éve
szülő
commit
34e5863cd5
2 módosított fájl, 2 hozzáadás és 1 törlés
  1. 1 0
      CHANGELOG.md
  2. 1 1
      contracts/utils/math/Math.sol

+ 1 - 0
CHANGELOG.md

@@ -35,6 +35,7 @@
  * `Math` and `SignedMath`: optimize function `max` by using `>` instead of `>=`. ([#3679](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3679))
  * `Math`: Add `log2`, `log10` and `log256`. ([#3670](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3670))
  * Arbitrum: Update the vendored arbitrum contracts to match the nitro upgrade. ([#3692](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3692))
+ * `Math`: optimize `log256` rounding check. ([#3745](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3745))
 
 ### Breaking changes
 

+ 1 - 1
contracts/utils/math/Math.sol

@@ -339,7 +339,7 @@ library Math {
     function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
         unchecked {
             uint256 result = log256(value);
-            return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);
+            return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);
         }
     }
 }