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

Side by Side Diff: src/compiler/js-builtin-reducer.cc

Issue 2064953004: [turbofan] Unify the PlainPrimitive as Number treatment. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: 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/js-builtin-reducer.h ('k') | src/compiler/js-typed-lowering.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 #include "src/compiler/js-builtin-reducer.h" 5 #include "src/compiler/js-builtin-reducer.h"
6 #include "src/compiler/js-graph.h" 6 #include "src/compiler/js-graph.h"
7 #include "src/compiler/node-matchers.h" 7 #include "src/compiler/node-matchers.h"
8 #include "src/compiler/node-properties.h" 8 #include "src/compiler/node-properties.h"
9 #include "src/compiler/simplified-operator.h" 9 #include "src/compiler/simplified-operator.h"
10 #include "src/objects-inl.h" 10 #include "src/objects-inl.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 84
85 private: 85 private:
86 Node* node_; 86 Node* node_;
87 }; 87 };
88 88
89 JSBuiltinReducer::JSBuiltinReducer(Editor* editor, JSGraph* jsgraph) 89 JSBuiltinReducer::JSBuiltinReducer(Editor* editor, JSGraph* jsgraph)
90 : AdvancedReducer(editor), 90 : AdvancedReducer(editor),
91 jsgraph_(jsgraph), 91 jsgraph_(jsgraph),
92 type_cache_(TypeCache::Get()) {} 92 type_cache_(TypeCache::Get()) {}
93 93
94 // ECMA-262, section 15.8.2.11. 94 // ES6 section 20.2.2.6 Math.atan ( x )
95 Reduction JSBuiltinReducer::ReduceMathMax(Node* node) { 95 Reduction JSBuiltinReducer::ReduceMathAtan(Node* node) {
96 JSCallReduction r(node); 96 JSCallReduction r(node);
97 if (r.InputsMatchZero()) { 97 if (r.InputsMatchOne(Type::PlainPrimitive())) {
98 // Math.max() -> -Infinity 98 // Math.atan(a:plain-primitive) -> NumberAtan(ToNumber(a))
99 return Replace(jsgraph()->Constant(-V8_INFINITY)); 99 Node* input = ToNumber(r.GetJSCallInput(0));
100 } 100 Node* value = graph()->NewNode(simplified()->NumberAtan(), input);
101 if (r.InputsMatchOne(Type::Number())) {
102 // Math.max(a:number) -> a
103 return Replace(r.left());
104 }
105 if (r.InputsMatchAll(Type::Integral32())) {
106 // Math.max(a:int32, b:int32, ...)
107 Node* value = r.GetJSCallInput(0);
108 for (int i = 1; i < r.GetJSCallArity(); i++) {
109 Node* const input = r.GetJSCallInput(i);
110 value = graph()->NewNode(
111 common()->Select(MachineRepresentation::kNone),
112 graph()->NewNode(simplified()->NumberLessThan(), input, value), value,
113 input);
114 }
115 return Replace(value); 101 return Replace(value);
116 } 102 }
117 return NoChange(); 103 return NoChange();
118 } 104 }
119 105
120 // ES6 section 20.2.2.19 Math.imul ( x, y ) 106 // ES6 section 20.2.2.8 Math.atan2 ( y, x )
121 Reduction JSBuiltinReducer::ReduceMathImul(Node* node) { 107 Reduction JSBuiltinReducer::ReduceMathAtan2(Node* node) {
122 JSCallReduction r(node); 108 JSCallReduction r(node);
123 if (r.InputsMatchTwo(Type::Number(), Type::Number())) { 109 if (r.InputsMatchTwo(Type::PlainPrimitive(), Type::PlainPrimitive())) {
124 // Math.imul(a:number, b:number) -> NumberImul(NumberToUint32(a), 110 // Math.atan2(a:plain-primitive,
125 // NumberToUint32(b)) 111 // b:plain-primitive) -> NumberAtan2(ToNumber(a),
126 Node* a = graph()->NewNode(simplified()->NumberToUint32(), r.left()); 112 // ToNumber(b))
127 Node* b = graph()->NewNode(simplified()->NumberToUint32(), r.right()); 113 Node* left = ToNumber(r.left());
128 Node* value = graph()->NewNode(simplified()->NumberImul(), a, b); 114 Node* right = ToNumber(r.right());
115 Node* value = graph()->NewNode(simplified()->NumberAtan2(), left, right);
129 return Replace(value); 116 return Replace(value);
130 } 117 }
131 return NoChange(); 118 return NoChange();
132 } 119 }
133 120
134 // ES6 section 20.2.2.10 Math.ceil ( x ) 121 // ES6 section 20.2.2.10 Math.ceil ( x )
135 Reduction JSBuiltinReducer::ReduceMathCeil(Node* node) { 122 Reduction JSBuiltinReducer::ReduceMathCeil(Node* node) {
136 JSCallReduction r(node); 123 JSCallReduction r(node);
137 if (r.InputsMatchOne(Type::Number())) { 124 if (r.InputsMatchOne(Type::PlainPrimitive())) {
138 // Math.ceil(a:number) -> NumberCeil(a) 125 // Math.ceil(a:plain-primitive) -> NumberCeil(ToNumber(a))
139 Node* value = graph()->NewNode(simplified()->NumberCeil(), r.left()); 126 Node* input = ToNumber(r.GetJSCallInput(0));
127 Node* value = graph()->NewNode(simplified()->NumberCeil(), input);
140 return Replace(value); 128 return Replace(value);
141 } 129 }
142 return NoChange(); 130 return NoChange();
143 } 131 }
144 132
145 // ES6 section 20.2.2.11 Math.clz32 ( x ) 133 // ES6 section 20.2.2.11 Math.clz32 ( x )
146 Reduction JSBuiltinReducer::ReduceMathClz32(Node* node) { 134 Reduction JSBuiltinReducer::ReduceMathClz32(Node* node) {
147 JSCallReduction r(node); 135 JSCallReduction r(node);
148 if (r.InputsMatchOne(Type::Unsigned32())) { 136 if (r.InputsMatchOne(Type::PlainPrimitive())) {
149 // Math.clz32(a:unsigned32) -> NumberClz32(a) 137 // Math.clz32(a:plain-primitive) -> NumberClz32(ToUint32(a))
150 Node* value = graph()->NewNode(simplified()->NumberClz32(), r.left()); 138 Node* input = ToUint32(r.GetJSCallInput(0));
151 return Replace(value); 139 Node* value = graph()->NewNode(simplified()->NumberClz32(), input);
152 }
153 if (r.InputsMatchOne(Type::Number())) {
154 // Math.clz32(a:number) -> NumberClz32(NumberToUint32(a))
155 Node* value = graph()->NewNode(
156 simplified()->NumberClz32(),
157 graph()->NewNode(simplified()->NumberToUint32(), r.left()));
158 return Replace(value); 140 return Replace(value);
159 } 141 }
160 return NoChange(); 142 return NoChange();
161 } 143 }
162 144
163 // ES6 draft 08-24-14, section 20.2.2.16. 145 // ES6 section 20.2.2.16 Math.floor ( x )
164 Reduction JSBuiltinReducer::ReduceMathFloor(Node* node) { 146 Reduction JSBuiltinReducer::ReduceMathFloor(Node* node) {
165 JSCallReduction r(node); 147 JSCallReduction r(node);
166 if (r.InputsMatchOne(Type::Number())) { 148 if (r.InputsMatchOne(Type::PlainPrimitive())) {
167 // Math.floor(a:number) -> NumberFloor(a) 149 // Math.floor(a:plain-primitive) -> NumberFloor(ToNumber(a))
168 Node* value = graph()->NewNode(simplified()->NumberFloor(), r.left()); 150 Node* input = ToNumber(r.GetJSCallInput(0));
151 Node* value = graph()->NewNode(simplified()->NumberFloor(), input);
169 return Replace(value); 152 return Replace(value);
170 } 153 }
171 return NoChange(); 154 return NoChange();
172 } 155 }
173 156
174 // ES6 draft 08-24-14, section 20.2.2.17. 157 // ES6 section 20.2.2.17 Math.fround ( x )
175 Reduction JSBuiltinReducer::ReduceMathFround(Node* node) { 158 Reduction JSBuiltinReducer::ReduceMathFround(Node* node) {
176 JSCallReduction r(node); 159 JSCallReduction r(node);
177 if (r.InputsMatchOne(Type::NumberOrUndefined())) { 160 if (r.InputsMatchOne(Type::PlainPrimitive())) {
178 // Math.fround(a:number) -> TruncateFloat64ToFloat32(a) 161 // Math.fround(a:plain-primitive) -> NumberFround(ToNumber(a))
179 Node* value = 162 Node* input = ToNumber(r.GetJSCallInput(0));
180 graph()->NewNode(machine()->TruncateFloat64ToFloat32(), r.left()); 163 Node* value = graph()->NewNode(simplified()->NumberFround(), input);
181 return Replace(value); 164 return Replace(value);
182 } 165 }
183 return NoChange(); 166 return NoChange();
184 } 167 }
185 168
186 // ES6 section 20.2.2.6 Math.atan ( x ) 169 // ES6 section 20.2.2.19 Math.imul ( x, y )
187 Reduction JSBuiltinReducer::ReduceMathAtan(Node* node) { 170 Reduction JSBuiltinReducer::ReduceMathImul(Node* node) {
188 JSCallReduction r(node); 171 JSCallReduction r(node);
189 if (r.InputsMatchOne(Type::Number())) { 172 if (r.InputsMatchTwo(Type::PlainPrimitive(), Type::PlainPrimitive())) {
190 // Math.atan(a:number) -> NumberAtan(a) 173 // Math.imul(a:plain-primitive,
191 Node* value = graph()->NewNode(simplified()->NumberAtan(), r.left()); 174 // b:plain-primitive) -> NumberImul(ToUint32(a),
192 return Replace(value); 175 // ToUint32(b))
193 } 176 Node* left = ToUint32(r.left());
194 return NoChange(); 177 Node* right = ToUint32(r.right());
195 } 178 Node* value = graph()->NewNode(simplified()->NumberImul(), left, right);
196
197 // ES6 section 20.2.2.8 Math.atan2 ( y, x )
198 Reduction JSBuiltinReducer::ReduceMathAtan2(Node* node) {
199 JSCallReduction r(node);
200 if (r.InputsMatchTwo(Type::Number(), Type::Number())) {
201 // Math.atan2(a:number, b:number) -> NumberAtan2(a, b)
202 Node* value =
203 graph()->NewNode(simplified()->NumberAtan2(), r.left(), r.right());
204 return Replace(value); 179 return Replace(value);
205 } 180 }
206 return NoChange(); 181 return NoChange();
207 } 182 }
208 183
209 // ES6 section 20.2.2.20 Math.log ( x ) 184 // ES6 section 20.2.2.20 Math.log ( x )
210 Reduction JSBuiltinReducer::ReduceMathLog(Node* node) { 185 Reduction JSBuiltinReducer::ReduceMathLog(Node* node) {
211 JSCallReduction r(node); 186 JSCallReduction r(node);
212 if (r.InputsMatchOne(Type::Number())) { 187 if (r.InputsMatchOne(Type::PlainPrimitive())) {
213 // Math.log(a:number) -> NumberLog(a) 188 // Math.log(a:plain-primitive) -> NumberLog(ToNumber(a))
214 Node* value = graph()->NewNode(simplified()->NumberLog(), r.left()); 189 Node* input = ToNumber(r.GetJSCallInput(0));
190 Node* value = graph()->NewNode(simplified()->NumberLog(), input);
215 return Replace(value); 191 return Replace(value);
216 } 192 }
217 return NoChange(); 193 return NoChange();
218 } 194 }
219 195
220 // ES6 section 20.2.2.21 Math.log1p ( x ) 196 // ES6 section 20.2.2.21 Math.log1p ( x )
221 Reduction JSBuiltinReducer::ReduceMathLog1p(Node* node) { 197 Reduction JSBuiltinReducer::ReduceMathLog1p(Node* node) {
222 JSCallReduction r(node); 198 JSCallReduction r(node);
223 if (r.InputsMatchOne(Type::Number())) { 199 if (r.InputsMatchOne(Type::PlainPrimitive())) {
224 // Math.log1p(a:number) -> NumberLog1p(a) 200 // Math.log1p(a:plain-primitive) -> NumberLog1p(ToNumber(a))
225 Node* value = graph()->NewNode(simplified()->NumberLog1p(), r.left()); 201 Node* input = ToNumber(r.GetJSCallInput(0));
202 Node* value = graph()->NewNode(simplified()->NumberLog1p(), input);
226 return Replace(value); 203 return Replace(value);
227 } 204 }
228 return NoChange(); 205 return NoChange();
206 }
207
208 // ES6 section 20.2.2.24 Math.max ( value1, value2, ...values )
209 Reduction JSBuiltinReducer::ReduceMathMax(Node* node) {
210 JSCallReduction r(node);
211 if (r.InputsMatchZero()) {
212 // Math.max() -> -Infinity
213 return Replace(jsgraph()->Constant(-V8_INFINITY));
214 }
215 if (r.InputsMatchOne(Type::PlainPrimitive())) {
216 // Math.max(a:plain-primitive) -> ToNumber(a)
217 Node* value = ToNumber(r.GetJSCallInput(0));
218 return Replace(value);
219 }
220 if (r.InputsMatchAll(Type::Integral32())) {
221 // Math.max(a:int32, b:int32, ...)
222 Node* value = r.GetJSCallInput(0);
223 for (int i = 1; i < r.GetJSCallArity(); i++) {
224 Node* const input = r.GetJSCallInput(i);
225 value = graph()->NewNode(
226 common()->Select(MachineRepresentation::kNone),
227 graph()->NewNode(simplified()->NumberLessThan(), input, value), value,
228 input);
229 }
230 return Replace(value);
231 }
232 return NoChange();
233 }
234
235 // ES6 section 20.2.2.25 Math.min ( value1, value2, ...values )
236 Reduction JSBuiltinReducer::ReduceMathMin(Node* node) {
237 JSCallReduction r(node);
238 if (r.InputsMatchZero()) {
239 // Math.min() -> Infinity
240 return Replace(jsgraph()->Constant(V8_INFINITY));
241 }
242 if (r.InputsMatchOne(Type::PlainPrimitive())) {
243 // Math.min(a:plain-primitive) -> ToNumber(a)
244 Node* value = ToNumber(r.GetJSCallInput(0));
245 return Replace(value);
246 }
247 if (r.InputsMatchAll(Type::Integral32())) {
248 // Math.min(a:int32, b:int32, ...)
249 Node* value = r.GetJSCallInput(0);
250 for (int i = 1; i < r.GetJSCallArity(); i++) {
251 Node* const input = r.GetJSCallInput(i);
252 value = graph()->NewNode(
253 common()->Select(MachineRepresentation::kNone),
254 graph()->NewNode(simplified()->NumberLessThan(), input, value), input,
255 value);
256 }
257 return Replace(value);
258 }
259 return NoChange();
229 } 260 }
230 261
231 // ES6 section 20.2.2.28 Math.round ( x ) 262 // ES6 section 20.2.2.28 Math.round ( x )
232 Reduction JSBuiltinReducer::ReduceMathRound(Node* node) { 263 Reduction JSBuiltinReducer::ReduceMathRound(Node* node) {
233 JSCallReduction r(node); 264 JSCallReduction r(node);
234 if (r.InputsMatchOne(Type::Number())) { 265 if (r.InputsMatchOne(Type::PlainPrimitive())) {
235 // Math.round(a:number) -> NumberRound(a) 266 // Math.round(a:plain-primitive) -> NumberRound(ToNumber(a))
236 Node* value = graph()->NewNode(simplified()->NumberRound(), r.left()); 267 Node* input = ToNumber(r.GetJSCallInput(0));
268 Node* value = graph()->NewNode(simplified()->NumberRound(), input);
237 return Replace(value); 269 return Replace(value);
238 } 270 }
239 return NoChange(); 271 return NoChange();
240 } 272 }
241 273
242 // ES6 section 20.2.2.32 Math.sqrt ( x ) 274 // ES6 section 20.2.2.32 Math.sqrt ( x )
243 Reduction JSBuiltinReducer::ReduceMathSqrt(Node* node) { 275 Reduction JSBuiltinReducer::ReduceMathSqrt(Node* node) {
244 JSCallReduction r(node); 276 JSCallReduction r(node);
245 if (r.InputsMatchOne(Type::Number())) { 277 if (r.InputsMatchOne(Type::PlainPrimitive())) {
246 // Math.sqrt(a:number) -> Float64Sqrt(a) 278 // Math.sqrt(a:plain-primitive) -> NumberSqrt(ToNumber(a))
247 Node* value = graph()->NewNode(machine()->Float64Sqrt(), r.left()); 279 Node* input = ToNumber(r.GetJSCallInput(0));
280 Node* value = graph()->NewNode(simplified()->NumberSqrt(), input);
248 return Replace(value); 281 return Replace(value);
249 } 282 }
250 return NoChange(); 283 return NoChange();
251 } 284 }
252 285
253 // ES6 section 20.2.2.35 Math.trunc ( x ) 286 // ES6 section 20.2.2.35 Math.trunc ( x )
254 Reduction JSBuiltinReducer::ReduceMathTrunc(Node* node) { 287 Reduction JSBuiltinReducer::ReduceMathTrunc(Node* node) {
255 JSCallReduction r(node); 288 JSCallReduction r(node);
256 if (r.InputsMatchOne(Type::Number())) { 289 if (r.InputsMatchOne(Type::PlainPrimitive())) {
257 // Math.trunc(a:number) -> NumberTrunc(a) 290 // Math.trunc(a:plain-primitive) -> NumberTrunc(ToNumber(a))
258 Node* value = graph()->NewNode(simplified()->NumberTrunc(), r.left()); 291 Node* input = ToNumber(r.GetJSCallInput(0));
292 Node* value = graph()->NewNode(simplified()->NumberTrunc(), input);
259 return Replace(value); 293 return Replace(value);
260 } 294 }
261 return NoChange(); 295 return NoChange();
262 } 296 }
263 297
264 // ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits ) 298 // ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits )
265 Reduction JSBuiltinReducer::ReduceStringFromCharCode(Node* node) { 299 Reduction JSBuiltinReducer::ReduceStringFromCharCode(Node* node) {
266 JSCallReduction r(node); 300 JSCallReduction r(node);
267 if (r.InputsMatchOne(Type::Number())) { 301 if (r.InputsMatchOne(Type::PlainPrimitive())) {
268 // String.fromCharCode(a:number) -> StringFromCharCode(a) 302 // String.fromCharCode(a:plain-primitive) -> StringFromCharCode(a)
269 Node* value = 303 Node* input = ToNumber(r.GetJSCallInput(0));
270 graph()->NewNode(simplified()->StringFromCharCode(), r.left()); 304 Node* value = graph()->NewNode(simplified()->StringFromCharCode(), input);
271 return Replace(value); 305 return Replace(value);
272 } 306 }
273 return NoChange(); 307 return NoChange();
274 } 308 }
275 309
276 Reduction JSBuiltinReducer::Reduce(Node* node) { 310 Reduction JSBuiltinReducer::Reduce(Node* node) {
277 Reduction reduction = NoChange(); 311 Reduction reduction = NoChange();
278 JSCallReduction r(node); 312 JSCallReduction r(node);
279 313
280 // Dispatch according to the BuiltinFunctionId if present. 314 // Dispatch according to the BuiltinFunctionId if present.
281 if (!r.HasBuiltinFunctionId()) return NoChange(); 315 if (!r.HasBuiltinFunctionId()) return NoChange();
282 switch (r.GetBuiltinFunctionId()) { 316 switch (r.GetBuiltinFunctionId()) {
283 case kMathMax: 317 case kMathAtan:
284 reduction = ReduceMathMax(node); 318 reduction = ReduceMathAtan(node);
285 break; 319 break;
286 case kMathImul: 320 case kMathAtan2:
287 reduction = ReduceMathImul(node); 321 reduction = ReduceMathAtan2(node);
288 break; 322 break;
289 case kMathClz32: 323 case kMathClz32:
290 reduction = ReduceMathClz32(node); 324 reduction = ReduceMathClz32(node);
291 break; 325 break;
292 case kMathCeil: 326 case kMathCeil:
293 reduction = ReduceMathCeil(node); 327 reduction = ReduceMathCeil(node);
294 break; 328 break;
295 case kMathFloor: 329 case kMathFloor:
296 reduction = ReduceMathFloor(node); 330 reduction = ReduceMathFloor(node);
297 break; 331 break;
298 case kMathFround: 332 case kMathFround:
299 reduction = ReduceMathFround(node); 333 reduction = ReduceMathFround(node);
300 break; 334 break;
301 case kMathAtan: 335 case kMathImul:
302 reduction = ReduceMathAtan(node); 336 reduction = ReduceMathImul(node);
303 break;
304 case kMathAtan2:
305 reduction = ReduceMathAtan2(node);
306 break; 337 break;
307 case kMathLog: 338 case kMathLog:
308 reduction = ReduceMathLog(node); 339 reduction = ReduceMathLog(node);
309 break; 340 break;
310 case kMathLog1p: 341 case kMathLog1p:
311 reduction = ReduceMathLog1p(node); 342 reduction = ReduceMathLog1p(node);
312 break; 343 break;
344 case kMathMax:
345 reduction = ReduceMathMax(node);
346 break;
347 case kMathMin:
348 reduction = ReduceMathMin(node);
349 break;
313 case kMathRound: 350 case kMathRound:
314 reduction = ReduceMathRound(node); 351 reduction = ReduceMathRound(node);
315 break; 352 break;
316 case kMathSqrt: 353 case kMathSqrt:
317 reduction = ReduceMathSqrt(node); 354 reduction = ReduceMathSqrt(node);
318 break; 355 break;
319 case kMathTrunc: 356 case kMathTrunc:
320 reduction = ReduceMathTrunc(node); 357 reduction = ReduceMathTrunc(node);
321 break; 358 break;
322 case kStringFromCharCode: 359 case kStringFromCharCode:
323 reduction = ReduceStringFromCharCode(node); 360 reduction = ReduceStringFromCharCode(node);
324 break; 361 break;
325 default: 362 default:
326 break; 363 break;
327 } 364 }
328 365
329 // Replace builtin call assuming replacement nodes are pure values that don't 366 // Replace builtin call assuming replacement nodes are pure values that don't
330 // produce an effect. Replaces {node} with {reduction} and relaxes effects. 367 // produce an effect. Replaces {node} with {reduction} and relaxes effects.
331 if (reduction.Changed()) ReplaceWithValue(node, reduction.replacement()); 368 if (reduction.Changed()) ReplaceWithValue(node, reduction.replacement());
332 369
333 return reduction; 370 return reduction;
334 } 371 }
335 372
373 Node* JSBuiltinReducer::ToNumber(Node* input) {
374 Type* input_type = NodeProperties::GetType(input);
375 if (input_type->Is(Type::Number())) return input;
376 return graph()->NewNode(simplified()->PlainPrimitiveToNumber(), input);
377 }
378
379 Node* JSBuiltinReducer::ToUint32(Node* input) {
380 input = ToNumber(input);
381 Type* input_type = NodeProperties::GetType(input);
382 if (input_type->Is(Type::Unsigned32())) return input;
383 return graph()->NewNode(simplified()->NumberToUint32(), input);
384 }
336 385
337 Graph* JSBuiltinReducer::graph() const { return jsgraph()->graph(); } 386 Graph* JSBuiltinReducer::graph() const { return jsgraph()->graph(); }
338 387
339 388
340 Isolate* JSBuiltinReducer::isolate() const { return jsgraph()->isolate(); } 389 Isolate* JSBuiltinReducer::isolate() const { return jsgraph()->isolate(); }
341 390
342 391
343 CommonOperatorBuilder* JSBuiltinReducer::common() const { 392 CommonOperatorBuilder* JSBuiltinReducer::common() const {
344 return jsgraph()->common(); 393 return jsgraph()->common();
345 } 394 }
346 395
347 396
348 MachineOperatorBuilder* JSBuiltinReducer::machine() const {
349 return jsgraph()->machine();
350 }
351
352
353 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const { 397 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const {
354 return jsgraph()->simplified(); 398 return jsgraph()->simplified();
355 } 399 }
356 400
357 } // namespace compiler 401 } // namespace compiler
358 } // namespace internal 402 } // namespace internal
359 } // namespace v8 403 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-builtin-reducer.h ('k') | src/compiler/js-typed-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698