summaryrefslogtreecommitdiff
path: root/deps/v8/src/base/division-by-constant.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/base/division-by-constant.cc')
-rw-r--r--deps/v8/src/base/division-by-constant.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/deps/v8/src/base/division-by-constant.cc b/deps/v8/src/base/division-by-constant.cc
index 97dfd5680b..fbc36463dc 100644
--- a/deps/v8/src/base/division-by-constant.cc
+++ b/deps/v8/src/base/division-by-constant.cc
@@ -6,15 +6,16 @@
#include <stdint.h>
+#include <type_traits>
+
#include "src/base/logging.h"
#include "src/base/macros.h"
namespace v8 {
namespace base {
-template <class T>
+template <class T, std::enable_if_t<std::is_unsigned_v<T>, bool>>
MagicNumbersForDivision<T> SignedDivisionByConstant(T d) {
- static_assert(static_cast<T>(0) < static_cast<T>(-1));
DCHECK(d != static_cast<T>(-1) && d != 0 && d != 1);
const unsigned bits = static_cast<unsigned>(sizeof(T)) * 8;
const T min = (static_cast<T>(1) << (bits - 1));
@@ -48,11 +49,10 @@ MagicNumbersForDivision<T> SignedDivisionByConstant(T d) {
return MagicNumbersForDivision<T>(neg ? (0 - mul) : mul, p - bits, false);
}
-
template <class T>
MagicNumbersForDivision<T> UnsignedDivisionByConstant(T d,
unsigned leading_zeros) {
- static_assert(static_cast<T>(0) < static_cast<T>(-1));
+ static_assert(std::is_unsigned_v<T>);
DCHECK_NE(d, 0);
const unsigned bits = static_cast<unsigned>(sizeof(T)) * 8;
const T ones = ~static_cast<T>(0) >> leading_zeros;