OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_SIMPLIFIED_OPERATOR_H_ | 5 #ifndef V8_COMPILER_SIMPLIFIED_OPERATOR_H_ |
6 #define V8_COMPILER_SIMPLIFIED_OPERATOR_H_ | 6 #define V8_COMPILER_SIMPLIFIED_OPERATOR_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/compiler/type-hints.h" | 10 #include "src/compiler/type-hints.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 size_t hash_value(CheckTaggedHoleMode); | 122 size_t hash_value(CheckTaggedHoleMode); |
123 | 123 |
124 std::ostream& operator<<(std::ostream&, CheckTaggedHoleMode); | 124 std::ostream& operator<<(std::ostream&, CheckTaggedHoleMode); |
125 | 125 |
126 CheckTaggedHoleMode CheckTaggedHoleModeOf(const Operator*) WARN_UNUSED_RESULT; | 126 CheckTaggedHoleMode CheckTaggedHoleModeOf(const Operator*) WARN_UNUSED_RESULT; |
127 | 127 |
128 Type* TypeOf(const Operator* op) WARN_UNUSED_RESULT; | 128 Type* TypeOf(const Operator* op) WARN_UNUSED_RESULT; |
129 | 129 |
130 BinaryOperationHints::Hint BinaryOperationHintOf(const Operator* op); | 130 BinaryOperationHints::Hint BinaryOperationHintOf(const Operator* op); |
131 | 131 |
| 132 CompareOperationHints::Hint CompareOperationHintOf(const Operator* op); |
| 133 |
132 // Interface for building simplified operators, which represent the | 134 // Interface for building simplified operators, which represent the |
133 // medium-level operations of V8, including adding numbers, allocating objects, | 135 // medium-level operations of V8, including adding numbers, allocating objects, |
134 // indexing into objects and arrays, etc. | 136 // indexing into objects and arrays, etc. |
135 // All operators are typed but many are representation independent. | 137 // All operators are typed but many are representation independent. |
136 | 138 |
137 // Number values from JS can be in one of these representations: | 139 // Number values from JS can be in one of these representations: |
138 // - Tagged: word-sized integer that is either | 140 // - Tagged: word-sized integer that is either |
139 // - a signed small integer (31 or 32 bits plus a tag) | 141 // - a signed small integer (31 or 32 bits plus a tag) |
140 // - a tagged pointer to a HeapNumber object that has a float64 field | 142 // - a tagged pointer to a HeapNumber object that has a float64 field |
141 // - Int32: an untagged signed 32-bit integer | 143 // - Int32: an untagged signed 32-bit integer |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 const Operator* NumberSqrt(); | 187 const Operator* NumberSqrt(); |
186 const Operator* NumberTrunc(); | 188 const Operator* NumberTrunc(); |
187 const Operator* NumberToInt32(); | 189 const Operator* NumberToInt32(); |
188 const Operator* NumberToUint32(); | 190 const Operator* NumberToUint32(); |
189 | 191 |
190 const Operator* NumberSilenceNaN(); | 192 const Operator* NumberSilenceNaN(); |
191 | 193 |
192 const Operator* SpeculativeNumberAdd(BinaryOperationHints::Hint hint); | 194 const Operator* SpeculativeNumberAdd(BinaryOperationHints::Hint hint); |
193 const Operator* SpeculativeNumberSubtract(BinaryOperationHints::Hint hint); | 195 const Operator* SpeculativeNumberSubtract(BinaryOperationHints::Hint hint); |
194 | 196 |
| 197 const Operator* SpeculativeNumberLessThan(CompareOperationHints::Hint hint); |
| 198 const Operator* SpeculativeNumberLessThanOrEqual( |
| 199 CompareOperationHints::Hint hint); |
| 200 const Operator* SpeculativeNumberEqual(CompareOperationHints::Hint hint); |
| 201 |
195 const Operator* ReferenceEqual(Type* type); | 202 const Operator* ReferenceEqual(Type* type); |
196 | 203 |
197 const Operator* StringEqual(); | 204 const Operator* StringEqual(); |
198 const Operator* StringLessThan(); | 205 const Operator* StringLessThan(); |
199 const Operator* StringLessThanOrEqual(); | 206 const Operator* StringLessThanOrEqual(); |
200 const Operator* StringFromCharCode(); | 207 const Operator* StringFromCharCode(); |
201 const Operator* StringToNumber(); | 208 const Operator* StringToNumber(); |
202 | 209 |
203 const Operator* PlainPrimitiveToNumber(); | 210 const Operator* PlainPrimitiveToNumber(); |
204 const Operator* PlainPrimitiveToWord32(); | 211 const Operator* PlainPrimitiveToWord32(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 Zone* const zone_; | 268 Zone* const zone_; |
262 | 269 |
263 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder); | 270 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder); |
264 }; | 271 }; |
265 | 272 |
266 } // namespace compiler | 273 } // namespace compiler |
267 } // namespace internal | 274 } // namespace internal |
268 } // namespace v8 | 275 } // namespace v8 |
269 | 276 |
270 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_ | 277 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_ |
OLD | NEW |