OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_ | 5 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_ |
6 #define V8_COMPILER_MACHINE_OPERATOR_H_ | 6 #define V8_COMPILER_MACHINE_OPERATOR_H_ |
7 | 7 |
8 #include "src/base/flags.h" | 8 #include "src/base/flags.h" |
9 #include "src/compiler/machine-type.h" | 9 #include "src/compiler/machine-type.h" |
10 | 10 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 size_t hash_value(StoreRepresentation); | 49 size_t hash_value(StoreRepresentation); |
50 | 50 |
51 std::ostream& operator<<(std::ostream&, StoreRepresentation); | 51 std::ostream& operator<<(std::ostream&, StoreRepresentation); |
52 | 52 |
53 StoreRepresentation const& StoreRepresentationOf(Operator const*); | 53 StoreRepresentation const& StoreRepresentationOf(Operator const*); |
54 | 54 |
55 | 55 |
56 // Interface for building machine-level operators. These operators are | 56 // Interface for building machine-level operators. These operators are |
57 // machine-level but machine-independent and thus define a language suitable | 57 // machine-level but machine-independent and thus define a language suitable |
58 // for generating code to run on architectures such as ia32, x64, arm, etc. | 58 // for generating code to run on architectures such as ia32, x64, arm, etc. |
59 class MachineOperatorBuilder FINAL { | 59 class MachineOperatorBuilder FINAL : public ZoneObject { |
60 public: | 60 public: |
61 // Flags that specify which operations are available. This is useful | 61 // Flags that specify which operations are available. This is useful |
62 // for operations that are unsupported by some back-ends. | 62 // for operations that are unsupported by some back-ends. |
63 enum class Flag : unsigned { | 63 enum class Flag : unsigned { |
64 kNoFlags = 0, | 64 kNoFlags = 0, |
65 kFloat64Floor = 1 << 0, | 65 kFloat64Floor = 1 << 0, |
66 kFloat64Ceil = 1 << 1, | 66 kFloat64Ceil = 1 << 1, |
67 kFloat64RoundTruncate = 1 << 2, | 67 kFloat64RoundTruncate = 1 << 2, |
68 kFloat64RoundTiesAway = 1 << 3 | 68 kFloat64RoundTiesAway = 1 << 3 |
69 }; | 69 }; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 return Is32() ? Prefix##32##Suffix() : Prefix##64##Suffix(); \ | 202 return Is32() ? Prefix##32##Suffix() : Prefix##64##Suffix(); \ |
203 } | 203 } |
204 PSEUDO_OP_LIST(PSEUDO_OP) | 204 PSEUDO_OP_LIST(PSEUDO_OP) |
205 #undef PSEUDO_OP | 205 #undef PSEUDO_OP |
206 #undef PSEUDO_OP_LIST | 206 #undef PSEUDO_OP_LIST |
207 | 207 |
208 private: | 208 private: |
209 const MachineOperatorBuilderImpl& impl_; | 209 const MachineOperatorBuilderImpl& impl_; |
210 const MachineType word_; | 210 const MachineType word_; |
211 const Flags flags_; | 211 const Flags flags_; |
| 212 DISALLOW_COPY_AND_ASSIGN(MachineOperatorBuilder); |
212 }; | 213 }; |
213 | 214 |
214 | 215 |
215 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags) | 216 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags) |
216 } // namespace compiler | 217 } // namespace compiler |
217 } // namespace internal | 218 } // namespace internal |
218 } // namespace v8 | 219 } // namespace v8 |
219 | 220 |
220 #endif // V8_COMPILER_MACHINE_OPERATOR_H_ | 221 #endif // V8_COMPILER_MACHINE_OPERATOR_H_ |
OLD | NEW |