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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 size_t hash_value(ElementAccess const&); | 100 size_t hash_value(ElementAccess const&); |
101 | 101 |
102 std::ostream& operator<<(std::ostream&, ElementAccess const&); | 102 std::ostream& operator<<(std::ostream&, ElementAccess const&); |
103 | 103 |
104 ElementAccess const& ElementAccessOf(const Operator* op) WARN_UNUSED_RESULT; | 104 ElementAccess const& ElementAccessOf(const Operator* op) WARN_UNUSED_RESULT; |
105 | 105 |
106 Type* TypeOf(const Operator* op) WARN_UNUSED_RESULT; | 106 Type* TypeOf(const Operator* op) WARN_UNUSED_RESULT; |
107 | 107 |
108 BinaryOperationHints::Hint BinaryOperationHintOf(const Operator* op); | 108 BinaryOperationHints::Hint BinaryOperationHintOf(const Operator* op); |
109 | 109 |
| 110 CompareOperationHints::Hint CompareOperationHintOf(const Operator* op); |
| 111 |
110 // Interface for building simplified operators, which represent the | 112 // Interface for building simplified operators, which represent the |
111 // medium-level operations of V8, including adding numbers, allocating objects, | 113 // medium-level operations of V8, including adding numbers, allocating objects, |
112 // indexing into objects and arrays, etc. | 114 // indexing into objects and arrays, etc. |
113 // All operators are typed but many are representation independent. | 115 // All operators are typed but many are representation independent. |
114 | 116 |
115 // Number values from JS can be in one of these representations: | 117 // Number values from JS can be in one of these representations: |
116 // - Tagged: word-sized integer that is either | 118 // - Tagged: word-sized integer that is either |
117 // - a signed small integer (31 or 32 bits plus a tag) | 119 // - a signed small integer (31 or 32 bits plus a tag) |
118 // - a tagged pointer to a HeapNumber object that has a float64 field | 120 // - a tagged pointer to a HeapNumber object that has a float64 field |
119 // - Int32: an untagged signed 32-bit integer | 121 // - Int32: an untagged signed 32-bit integer |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 const Operator* NumberLog(); | 159 const Operator* NumberLog(); |
158 const Operator* NumberRound(); | 160 const Operator* NumberRound(); |
159 const Operator* NumberTrunc(); | 161 const Operator* NumberTrunc(); |
160 const Operator* NumberToInt32(); | 162 const Operator* NumberToInt32(); |
161 const Operator* NumberToUint32(); | 163 const Operator* NumberToUint32(); |
162 const Operator* NumberIsHoleNaN(); | 164 const Operator* NumberIsHoleNaN(); |
163 | 165 |
164 const Operator* SpeculativeNumberAdd(BinaryOperationHints::Hint hint); | 166 const Operator* SpeculativeNumberAdd(BinaryOperationHints::Hint hint); |
165 const Operator* SpeculativeNumberSubtract(BinaryOperationHints::Hint hint); | 167 const Operator* SpeculativeNumberSubtract(BinaryOperationHints::Hint hint); |
166 | 168 |
| 169 const Operator* SpeculativeNumberLessThan(CompareOperationHints::Hint hint); |
| 170 const Operator* SpeculativeNumberLessThanOrEqual( |
| 171 CompareOperationHints::Hint hint); |
| 172 const Operator* SpeculativeNumberEqual(CompareOperationHints::Hint hint); |
| 173 |
167 const Operator* ReferenceEqual(Type* type); | 174 const Operator* ReferenceEqual(Type* type); |
168 | 175 |
169 const Operator* StringEqual(); | 176 const Operator* StringEqual(); |
170 const Operator* StringLessThan(); | 177 const Operator* StringLessThan(); |
171 const Operator* StringLessThanOrEqual(); | 178 const Operator* StringLessThanOrEqual(); |
172 const Operator* StringFromCharCode(); | 179 const Operator* StringFromCharCode(); |
173 const Operator* StringToNumber(); | 180 const Operator* StringToNumber(); |
174 | 181 |
175 const Operator* ChangeTaggedSignedToInt32(); | 182 const Operator* ChangeTaggedSignedToInt32(); |
176 const Operator* ChangeTaggedToInt32(); | 183 const Operator* ChangeTaggedToInt32(); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 Zone* const zone_; | 230 Zone* const zone_; |
224 | 231 |
225 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder); | 232 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder); |
226 }; | 233 }; |
227 | 234 |
228 } // namespace compiler | 235 } // namespace compiler |
229 } // namespace internal | 236 } // namespace internal |
230 } // namespace v8 | 237 } // namespace v8 |
231 | 238 |
232 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_ | 239 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_ |
OLD | NEW |