Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: src/compiler/simplified-operator.h

Issue 2222983002: [turbofan] Also consume number type feedback for abstract equality. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | src/compiler/simplified-operator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/operator.h" 10 #include "src/compiler/operator.h"
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 kNeverReturnHole, // Never return the hole (deoptimize instead). 123 kNeverReturnHole, // Never return the hole (deoptimize instead).
124 kConvertHoleToUndefined // Convert the hole to undefined. 124 kConvertHoleToUndefined // Convert the hole to undefined.
125 }; 125 };
126 126
127 size_t hash_value(CheckTaggedHoleMode); 127 size_t hash_value(CheckTaggedHoleMode);
128 128
129 std::ostream& operator<<(std::ostream&, CheckTaggedHoleMode); 129 std::ostream& operator<<(std::ostream&, CheckTaggedHoleMode);
130 130
131 CheckTaggedHoleMode CheckTaggedHoleModeOf(const Operator*) WARN_UNUSED_RESULT; 131 CheckTaggedHoleMode CheckTaggedHoleModeOf(const Operator*) WARN_UNUSED_RESULT;
132 132
133 enum class CheckTaggedInputMode : uint8_t {
134 kNumber,
135 kNumberOrOddball,
136 };
137
138 size_t hash_value(CheckTaggedInputMode);
139
140 std::ostream& operator<<(std::ostream&, CheckTaggedInputMode);
141
142 CheckTaggedInputMode CheckTaggedInputModeOf(const Operator*) WARN_UNUSED_RESULT;
143
133 enum class CheckForMinusZeroMode : uint8_t { 144 enum class CheckForMinusZeroMode : uint8_t {
134 kCheckForMinusZero, 145 kCheckForMinusZero,
135 kDontCheckForMinusZero, 146 kDontCheckForMinusZero,
136 }; 147 };
137 148
138 size_t hash_value(CheckForMinusZeroMode); 149 size_t hash_value(CheckForMinusZeroMode);
139 150
140 std::ostream& operator<<(std::ostream&, CheckForMinusZeroMode); 151 std::ostream& operator<<(std::ostream&, CheckForMinusZeroMode);
141 152
142 CheckForMinusZeroMode CheckMinusZeroModeOf(const Operator*) WARN_UNUSED_RESULT; 153 CheckForMinusZeroMode CheckMinusZeroModeOf(const Operator*) WARN_UNUSED_RESULT;
(...skipping 23 matching lines...) Expand all
166 size_t hash_value(ElementsTransition); 177 size_t hash_value(ElementsTransition);
167 178
168 std::ostream& operator<<(std::ostream&, ElementsTransition); 179 std::ostream& operator<<(std::ostream&, ElementsTransition);
169 180
170 ElementsTransition ElementsTransitionOf(const Operator* op) WARN_UNUSED_RESULT; 181 ElementsTransition ElementsTransitionOf(const Operator* op) WARN_UNUSED_RESULT;
171 182
172 // A hint for speculative number operations. 183 // A hint for speculative number operations.
173 enum class NumberOperationHint : uint8_t { 184 enum class NumberOperationHint : uint8_t {
174 kSignedSmall, // Inputs were always Smi so far, output was in Smi range. 185 kSignedSmall, // Inputs were always Smi so far, output was in Smi range.
175 kSigned32, // Inputs and output were Signed32 so far. 186 kSigned32, // Inputs and output were Signed32 so far.
187 kNumber, // Inputs were Number, output was Number.
176 kNumberOrOddball, // Inputs were Number or Oddball, output was Number. 188 kNumberOrOddball, // Inputs were Number or Oddball, output was Number.
177 }; 189 };
178 190
179 size_t hash_value(NumberOperationHint); 191 size_t hash_value(NumberOperationHint);
180 192
181 std::ostream& operator<<(std::ostream&, NumberOperationHint); 193 std::ostream& operator<<(std::ostream&, NumberOperationHint);
182 194
183 NumberOperationHint NumberOperationHintOf(const Operator* op) 195 NumberOperationHint NumberOperationHintOf(const Operator* op)
184 WARN_UNUSED_RESULT; 196 WARN_UNUSED_RESULT;
185 197
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 const Operator* CheckedInt32Sub(); 328 const Operator* CheckedInt32Sub();
317 const Operator* CheckedInt32Div(); 329 const Operator* CheckedInt32Div();
318 const Operator* CheckedInt32Mod(); 330 const Operator* CheckedInt32Mod();
319 const Operator* CheckedUint32Div(); 331 const Operator* CheckedUint32Div();
320 const Operator* CheckedUint32Mod(); 332 const Operator* CheckedUint32Mod();
321 const Operator* CheckedInt32Mul(CheckForMinusZeroMode); 333 const Operator* CheckedInt32Mul(CheckForMinusZeroMode);
322 const Operator* CheckedUint32ToInt32(); 334 const Operator* CheckedUint32ToInt32();
323 const Operator* CheckedFloat64ToInt32(CheckForMinusZeroMode); 335 const Operator* CheckedFloat64ToInt32(CheckForMinusZeroMode);
324 const Operator* CheckedTaggedSignedToInt32(); 336 const Operator* CheckedTaggedSignedToInt32();
325 const Operator* CheckedTaggedToInt32(CheckForMinusZeroMode); 337 const Operator* CheckedTaggedToInt32(CheckForMinusZeroMode);
326 const Operator* CheckedTaggedToFloat64(); 338 const Operator* CheckedTaggedToFloat64(CheckTaggedInputMode);
327 const Operator* CheckedTruncateTaggedToWord32(); 339 const Operator* CheckedTruncateTaggedToWord32();
328 340
329 const Operator* CheckFloat64Hole(CheckFloat64HoleMode); 341 const Operator* CheckFloat64Hole(CheckFloat64HoleMode);
330 const Operator* CheckTaggedHole(CheckTaggedHoleMode); 342 const Operator* CheckTaggedHole(CheckTaggedHoleMode);
331 343
332 const Operator* ObjectIsCallable(); 344 const Operator* ObjectIsCallable();
333 const Operator* ObjectIsNumber(); 345 const Operator* ObjectIsNumber();
334 const Operator* ObjectIsReceiver(); 346 const Operator* ObjectIsReceiver();
335 const Operator* ObjectIsSmi(); 347 const Operator* ObjectIsSmi();
336 const Operator* ObjectIsString(); 348 const Operator* ObjectIsString();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 Zone* const zone_; 387 Zone* const zone_;
376 388
377 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder); 389 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder);
378 }; 390 };
379 391
380 } // namespace compiler 392 } // namespace compiler
381 } // namespace internal 393 } // namespace internal
382 } // namespace v8 394 } // namespace v8
383 395
384 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_ 396 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_
OLDNEW
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | src/compiler/simplified-operator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698