SafeMathMemoryCheck.sol 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../utils/math/SafeMath.sol";
  4. library SafeMathMemoryCheck {
  5. function addMemoryCheck() internal pure returns (uint256 mem) {
  6. uint256 length = 32;
  7. assembly {
  8. mem := mload(0x40)
  9. }
  10. for (uint256 i = 0; i < length; ++i) {
  11. SafeMath.add(1, 1);
  12. }
  13. assembly {
  14. mem := sub(mload(0x40), mem)
  15. }
  16. }
  17. function subMemoryCheck() internal pure returns (uint256 mem) {
  18. uint256 length = 32;
  19. assembly {
  20. mem := mload(0x40)
  21. }
  22. for (uint256 i = 0; i < length; ++i) {
  23. SafeMath.sub(1, 1);
  24. }
  25. assembly {
  26. mem := sub(mload(0x40), mem)
  27. }
  28. }
  29. function mulMemoryCheck() internal pure returns (uint256 mem) {
  30. uint256 length = 32;
  31. assembly {
  32. mem := mload(0x40)
  33. }
  34. for (uint256 i = 0; i < length; ++i) {
  35. SafeMath.mul(1, 1);
  36. }
  37. assembly {
  38. mem := sub(mload(0x40), mem)
  39. }
  40. }
  41. function divMemoryCheck() internal pure returns (uint256 mem) {
  42. uint256 length = 32;
  43. assembly {
  44. mem := mload(0x40)
  45. }
  46. for (uint256 i = 0; i < length; ++i) {
  47. SafeMath.div(1, 1);
  48. }
  49. assembly {
  50. mem := sub(mload(0x40), mem)
  51. }
  52. }
  53. function modMemoryCheck() internal pure returns (uint256 mem) {
  54. uint256 length = 32;
  55. assembly {
  56. mem := mload(0x40)
  57. }
  58. for (uint256 i = 0; i < length; ++i) {
  59. SafeMath.mod(1, 1);
  60. }
  61. assembly {
  62. mem := sub(mload(0x40), mem)
  63. }
  64. }
  65. }