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

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

Issue 1921563002: [turbofan] Initial version of number type feedback. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 6 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/type-hints.h"
10 #include "src/handles.h" 11 #include "src/handles.h"
11 #include "src/machine-type.h" 12 #include "src/machine-type.h"
12 #include "src/objects.h" 13 #include "src/objects.h"
13 14
14 namespace v8 { 15 namespace v8 {
15 namespace internal { 16 namespace internal {
16 17
17 // Forward declarations. 18 // Forward declarations.
18 class Type; 19 class Type;
19 class Zone; 20 class Zone;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 bool operator!=(ElementAccess const&, ElementAccess const&); 98 bool operator!=(ElementAccess const&, ElementAccess const&);
98 99
99 size_t hash_value(ElementAccess const&); 100 size_t hash_value(ElementAccess const&);
100 101
101 std::ostream& operator<<(std::ostream&, ElementAccess const&); 102 std::ostream& operator<<(std::ostream&, ElementAccess const&);
102 103
103 ElementAccess const& ElementAccessOf(const Operator* op) WARN_UNUSED_RESULT; 104 ElementAccess const& ElementAccessOf(const Operator* op) WARN_UNUSED_RESULT;
104 105
105 Type* TypeOf(const Operator* op) WARN_UNUSED_RESULT; 106 Type* TypeOf(const Operator* op) WARN_UNUSED_RESULT;
106 107
108 BinaryOperationHints::Hint BinaryOperationHintOf(const Operator* op);
109
107 // Interface for building simplified operators, which represent the 110 // Interface for building simplified operators, which represent the
108 // medium-level operations of V8, including adding numbers, allocating objects, 111 // medium-level operations of V8, including adding numbers, allocating objects,
109 // indexing into objects and arrays, etc. 112 // indexing into objects and arrays, etc.
110 // All operators are typed but many are representation independent. 113 // All operators are typed but many are representation independent.
111 114
112 // Number values from JS can be in one of these representations: 115 // Number values from JS can be in one of these representations:
113 // - Tagged: word-sized integer that is either 116 // - Tagged: word-sized integer that is either
114 // - a signed small integer (31 or 32 bits plus a tag) 117 // - a signed small integer (31 or 32 bits plus a tag)
115 // - a tagged pointer to a HeapNumber object that has a float64 field 118 // - a tagged pointer to a HeapNumber object that has a float64 field
116 // - Int32: an untagged signed 32-bit integer 119 // - Int32: an untagged signed 32-bit integer
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 const Operator* NumberImul(); 153 const Operator* NumberImul();
151 const Operator* NumberClz32(); 154 const Operator* NumberClz32();
152 const Operator* NumberCeil(); 155 const Operator* NumberCeil();
153 const Operator* NumberFloor(); 156 const Operator* NumberFloor();
154 const Operator* NumberRound(); 157 const Operator* NumberRound();
155 const Operator* NumberTrunc(); 158 const Operator* NumberTrunc();
156 const Operator* NumberToInt32(); 159 const Operator* NumberToInt32();
157 const Operator* NumberToUint32(); 160 const Operator* NumberToUint32();
158 const Operator* NumberIsHoleNaN(); 161 const Operator* NumberIsHoleNaN();
159 162
163 const Operator* SpeculativeNumberAdd(BinaryOperationHints::Hint hint);
164 const Operator* SpeculativeNumberSubtract(BinaryOperationHints::Hint hint);
165
160 const Operator* ReferenceEqual(Type* type); 166 const Operator* ReferenceEqual(Type* type);
161 167
162 const Operator* StringEqual(); 168 const Operator* StringEqual();
163 const Operator* StringLessThan(); 169 const Operator* StringLessThan();
164 const Operator* StringLessThanOrEqual(); 170 const Operator* StringLessThanOrEqual();
165 const Operator* StringFromCharCode(); 171 const Operator* StringFromCharCode();
166 const Operator* StringToNumber(); 172 const Operator* StringToNumber();
167 173
168 const Operator* ChangeTaggedSignedToInt32(); 174 const Operator* ChangeTaggedSignedToInt32();
169 const Operator* ChangeTaggedToInt32(); 175 const Operator* ChangeTaggedToInt32();
170 const Operator* ChangeTaggedToUint32(); 176 const Operator* ChangeTaggedToUint32();
171 const Operator* ChangeTaggedToFloat64(); 177 const Operator* ChangeTaggedToFloat64();
172 const Operator* ChangeInt31ToTaggedSigned(); 178 const Operator* ChangeInt31ToTaggedSigned();
173 const Operator* ChangeInt32ToTagged(); 179 const Operator* ChangeInt32ToTagged();
174 const Operator* ChangeUint32ToTagged(); 180 const Operator* ChangeUint32ToTagged();
175 const Operator* ChangeFloat64ToTagged(); 181 const Operator* ChangeFloat64ToTagged();
176 const Operator* ChangeTaggedToBit(); 182 const Operator* ChangeTaggedToBit();
177 const Operator* ChangeBitToTagged(); 183 const Operator* ChangeBitToTagged();
178 const Operator* TruncateTaggedToWord32(); 184 const Operator* TruncateTaggedToWord32();
179 const Operator* TruncateTaggedToFloat64(); 185 const Operator* TruncateTaggedToFloat64();
180 186
187 const Operator* CheckedUint32ToInt32();
188 const Operator* CheckedFloat64ToInt32();
189 const Operator* CheckedTaggedToInt32();
190 const Operator* CheckedTaggedToFloat64();
191
181 const Operator* ObjectIsCallable(); 192 const Operator* ObjectIsCallable();
182 const Operator* ObjectIsNumber(); 193 const Operator* ObjectIsNumber();
183 const Operator* ObjectIsReceiver(); 194 const Operator* ObjectIsReceiver();
184 const Operator* ObjectIsSmi(); 195 const Operator* ObjectIsSmi();
185 const Operator* ObjectIsString(); 196 const Operator* ObjectIsString();
186 const Operator* ObjectIsUndetectable(); 197 const Operator* ObjectIsUndetectable();
187 198
188 const Operator* TypeGuard(Type* type); 199 const Operator* TypeGuard(Type* type);
189 200
190 const Operator* Allocate(PretenureFlag pretenure = NOT_TENURED); 201 const Operator* Allocate(PretenureFlag pretenure = NOT_TENURED);
(...skipping 20 matching lines...) Expand all
211 Zone* const zone_; 222 Zone* const zone_;
212 223
213 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder); 224 DISALLOW_COPY_AND_ASSIGN(SimplifiedOperatorBuilder);
214 }; 225 };
215 226
216 } // namespace compiler 227 } // namespace compiler
217 } // namespace internal 228 } // namespace internal
218 } // namespace v8 229 } // namespace v8
219 230
220 #endif // V8_COMPILER_SIMPLIFIED_OPERATOR_H_ 231 #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