diff options
Diffstat (limited to 'deps/v8/src/base/flags.h')
-rw-r--r-- | deps/v8/src/base/flags.h | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/deps/v8/src/base/flags.h b/deps/v8/src/base/flags.h index 3bec12cb88..c1637de81c 100644 --- a/deps/v8/src/base/flags.h +++ b/deps/v8/src/base/flags.h @@ -27,15 +27,15 @@ class Flags final { typedef T flag_type; typedef S mask_type; - Flags() : mask_(0) {} - Flags(flag_type flag) // NOLINT(runtime/explicit) + constexpr Flags() : mask_(0) {} + constexpr Flags(flag_type flag) // NOLINT(runtime/explicit) : mask_(static_cast<S>(flag)) {} - explicit Flags(mask_type mask) : mask_(static_cast<S>(mask)) {} + constexpr explicit Flags(mask_type mask) : mask_(static_cast<S>(mask)) {} - bool operator==(flag_type flag) const { + constexpr bool operator==(flag_type flag) const { return mask_ == static_cast<S>(flag); } - bool operator!=(flag_type flag) const { + constexpr bool operator!=(flag_type flag) const { return mask_ != static_cast<S>(flag); } @@ -52,22 +52,34 @@ class Flags final { return *this; } - Flags operator&(const Flags& flags) const { return Flags(*this) &= flags; } - Flags operator|(const Flags& flags) const { return Flags(*this) |= flags; } - Flags operator^(const Flags& flags) const { return Flags(*this) ^= flags; } + constexpr Flags operator&(const Flags& flags) const { + return Flags(*this) &= flags; + } + constexpr Flags operator|(const Flags& flags) const { + return Flags(*this) |= flags; + } + constexpr Flags operator^(const Flags& flags) const { + return Flags(*this) ^= flags; + } Flags& operator&=(flag_type flag) { return operator&=(Flags(flag)); } Flags& operator|=(flag_type flag) { return operator|=(Flags(flag)); } Flags& operator^=(flag_type flag) { return operator^=(Flags(flag)); } - Flags operator&(flag_type flag) const { return operator&(Flags(flag)); } - Flags operator|(flag_type flag) const { return operator|(Flags(flag)); } - Flags operator^(flag_type flag) const { return operator^(Flags(flag)); } + constexpr Flags operator&(flag_type flag) const { + return operator&(Flags(flag)); + } + constexpr Flags operator|(flag_type flag) const { + return operator|(Flags(flag)); + } + constexpr Flags operator^(flag_type flag) const { + return operator^(Flags(flag)); + } - Flags operator~() const { return Flags(~mask_); } + constexpr Flags operator~() const { return Flags(~mask_); } - operator mask_type() const { return mask_; } - bool operator!() const { return !mask_; } + constexpr operator mask_type() const { return mask_; } + constexpr bool operator!() const { return !mask_; } friend size_t hash_value(const Flags& flags) { return flags.mask_; } |