Browse Source

Optimize Ownable and Pausable modifiers' size impact (#3347)

James Finucane 3 years ago
parent
commit
08d109d877
2 changed files with 33 additions and 12 deletions
  1. 10 3
      contracts/access/Ownable.sol
  2. 23 9
      contracts/security/Pausable.sol

+ 10 - 3
contracts/access/Ownable.sol

@@ -29,6 +29,14 @@ abstract contract Ownable is Context {
         _transferOwnership(_msgSender());
     }
 
+    /**
+     * @dev Throws if called by any account other than the owner.
+     */
+    modifier onlyOwner() {
+        _checkOwner();
+        _;
+    }
+
     /**
      * @dev Returns the address of the current owner.
      */
@@ -37,11 +45,10 @@ abstract contract Ownable is Context {
     }
 
     /**
-     * @dev Throws if called by any account other than the owner.
+     * @dev Throws if the sender is not the owner.
      */
-    modifier onlyOwner() {
+    function _checkOwner() internal view virtual {
         require(owner() == _msgSender(), "Ownable: caller is not the owner");
-        _;
     }
 
     /**

+ 23 - 9
contracts/security/Pausable.sol

@@ -34,13 +34,6 @@ abstract contract Pausable is Context {
         _paused = false;
     }
 
-    /**
-     * @dev Returns true if the contract is paused, and false otherwise.
-     */
-    function paused() public view virtual returns (bool) {
-        return _paused;
-    }
-
     /**
      * @dev Modifier to make a function callable only when the contract is not paused.
      *
@@ -49,7 +42,7 @@ abstract contract Pausable is Context {
      * - The contract must not be paused.
      */
     modifier whenNotPaused() {
-        require(!paused(), "Pausable: paused");
+        _requireNotPaused();
         _;
     }
 
@@ -61,10 +54,31 @@ abstract contract Pausable is Context {
      * - The contract must be paused.
      */
     modifier whenPaused() {
-        require(paused(), "Pausable: not paused");
+        _requirePaused();
         _;
     }
 
+    /**
+     * @dev Returns true if the contract is paused, and false otherwise.
+     */
+    function paused() public view virtual returns (bool) {
+        return _paused;
+    }
+
+    /**
+     * @dev Throws if the contract is paused.
+     */
+    function _requireNotPaused() internal view virtual {
+        require(!paused(), "Pausable: paused");
+    }
+
+    /**
+     * @dev Throws if the contract is not paused.
+     */
+    function _requirePaused() internal view virtual {
+        require(paused(), "Pausable: not paused");
+    }
+
     /**
      * @dev Triggers stopped state.
      *