| Index: src/compiler/machine-operator.h
|
| diff --git a/src/compiler/machine-operator.h b/src/compiler/machine-operator.h
|
| index 2c87189e98eb86cee9f245ebe4ed430b98420913..f717729dbcb9b46c20bc5f3874f0389a74f0a580 100644
|
| --- a/src/compiler/machine-operator.h
|
| +++ b/src/compiler/machine-operator.h
|
| @@ -60,17 +60,21 @@ class MachineOperatorBuilder FINAL : public ZoneObject {
|
| public:
|
| // Flags that specify which operations are available. This is useful
|
| // for operations that are unsupported by some back-ends.
|
| - enum class Flag : unsigned {
|
| - kNoFlags = 0,
|
| - kFloat64Floor = 1 << 0,
|
| - kFloat64Ceil = 1 << 1,
|
| - kFloat64RoundTruncate = 1 << 2,
|
| - kFloat64RoundTiesAway = 1 << 3
|
| + enum Flag {
|
| + kNoFlags = 0u,
|
| + kFloat64Floor = 1u << 0,
|
| + kFloat64Ceil = 1u << 1,
|
| + kFloat64RoundTruncate = 1u << 2,
|
| + kFloat64RoundTiesAway = 1u << 3,
|
| + kInt32DivIsSafe = 1u << 4,
|
| + kInt32ModIsSafe = 1u << 5,
|
| + kUint32DivIsSafe = 1u << 6,
|
| + kUint32ModIsSafe = 1u << 7
|
| };
|
| typedef base::Flags<Flag, unsigned> Flags;
|
|
|
| explicit MachineOperatorBuilder(MachineType word = kMachPtr,
|
| - Flags supportedOperators = Flag::kNoFlags);
|
| + Flags supportedOperators = kNoFlags);
|
|
|
| const Operator* Word32And();
|
| const Operator* Word32Or();
|
| @@ -104,6 +108,10 @@ class MachineOperatorBuilder FINAL : public ZoneObject {
|
| const Operator* Uint32LessThan();
|
| const Operator* Uint32LessThanOrEqual();
|
| const Operator* Uint32Mod();
|
| + bool Int32DivIsSafe() const { return flags_ & kInt32DivIsSafe; }
|
| + bool Int32ModIsSafe() const { return flags_ & kInt32ModIsSafe; }
|
| + bool Uint32DivIsSafe() const { return flags_ & kUint32DivIsSafe; }
|
| + bool Uint32ModIsSafe() const { return flags_ & kUint32ModIsSafe; }
|
|
|
| const Operator* Int64Add();
|
| const Operator* Int64Sub();
|
| @@ -153,14 +161,10 @@ class MachineOperatorBuilder FINAL : public ZoneObject {
|
| const Operator* Float64Ceil();
|
| const Operator* Float64RoundTruncate();
|
| const Operator* Float64RoundTiesAway();
|
| - bool HasFloat64Floor() { return flags_ & Flag::kFloat64Floor; }
|
| - bool HasFloat64Ceil() { return flags_ & Flag::kFloat64Ceil; }
|
| - bool HasFloat64RoundTruncate() {
|
| - return flags_ & Flag::kFloat64RoundTruncate;
|
| - }
|
| - bool HasFloat64RoundTiesAway() {
|
| - return flags_ & Flag::kFloat64RoundTiesAway;
|
| - }
|
| + bool HasFloat64Floor() { return flags_ & kFloat64Floor; }
|
| + bool HasFloat64Ceil() { return flags_ & kFloat64Ceil; }
|
| + bool HasFloat64RoundTruncate() { return flags_ & kFloat64RoundTruncate; }
|
| + bool HasFloat64RoundTiesAway() { return flags_ & kFloat64RoundTiesAway; }
|
|
|
| // load [base + index]
|
| const Operator* Load(LoadRepresentation rep);
|
|
|