| 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 #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 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 value = graph()->NewNode( | 332 value = graph()->NewNode( |
| 333 common()->Select(MachineRepresentation::kNone), | 333 common()->Select(MachineRepresentation::kNone), |
| 334 graph()->NewNode(simplified()->NumberLessThan(), input, value), input, | 334 graph()->NewNode(simplified()->NumberLessThan(), input, value), input, |
| 335 value); | 335 value); |
| 336 } | 336 } |
| 337 return Replace(value); | 337 return Replace(value); |
| 338 } | 338 } |
| 339 return NoChange(); | 339 return NoChange(); |
| 340 } | 340 } |
| 341 | 341 |
| 342 // ES6 section 20.2.2.26 Math.pow ( x, y ) |
| 343 Reduction JSBuiltinReducer::ReduceMathPow(Node* node) { |
| 344 JSCallReduction r(node); |
| 345 if (r.InputsMatchTwo(Type::PlainPrimitive(), Type::PlainPrimitive())) { |
| 346 // Math.pow(a:plain-primitive, |
| 347 // b:plain-primitive) -> NumberPow(ToNumber(a), ToNumber(b)) |
| 348 Node* left = ToNumber(r.left()); |
| 349 Node* right = ToNumber(r.right()); |
| 350 Node* value = graph()->NewNode(simplified()->NumberPow(), left, right); |
| 351 return Replace(value); |
| 352 } |
| 353 return NoChange(); |
| 354 } |
| 355 |
| 342 // ES6 section 20.2.2.28 Math.round ( x ) | 356 // ES6 section 20.2.2.28 Math.round ( x ) |
| 343 Reduction JSBuiltinReducer::ReduceMathRound(Node* node) { | 357 Reduction JSBuiltinReducer::ReduceMathRound(Node* node) { |
| 344 JSCallReduction r(node); | 358 JSCallReduction r(node); |
| 345 if (r.InputsMatchOne(Type::PlainPrimitive())) { | 359 if (r.InputsMatchOne(Type::PlainPrimitive())) { |
| 346 // Math.round(a:plain-primitive) -> NumberRound(ToNumber(a)) | 360 // Math.round(a:plain-primitive) -> NumberRound(ToNumber(a)) |
| 347 Node* input = ToNumber(r.GetJSCallInput(0)); | 361 Node* input = ToNumber(r.GetJSCallInput(0)); |
| 348 Node* value = graph()->NewNode(simplified()->NumberRound(), input); | 362 Node* value = graph()->NewNode(simplified()->NumberRound(), input); |
| 349 return Replace(value); | 363 return Replace(value); |
| 350 } | 364 } |
| 351 return NoChange(); | 365 return NoChange(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 break; | 448 break; |
| 435 case kMathAtan: | 449 case kMathAtan: |
| 436 reduction = ReduceMathAtan(node); | 450 reduction = ReduceMathAtan(node); |
| 437 break; | 451 break; |
| 438 case kMathAtan2: | 452 case kMathAtan2: |
| 439 reduction = ReduceMathAtan2(node); | 453 reduction = ReduceMathAtan2(node); |
| 440 break; | 454 break; |
| 441 case kMathAtanh: | 455 case kMathAtanh: |
| 442 reduction = ReduceMathAtanh(node); | 456 reduction = ReduceMathAtanh(node); |
| 443 break; | 457 break; |
| 458 case kMathCbrt: |
| 459 reduction = ReduceMathCbrt(node); |
| 460 break; |
| 461 case kMathCeil: |
| 462 reduction = ReduceMathCeil(node); |
| 463 break; |
| 444 case kMathClz32: | 464 case kMathClz32: |
| 445 reduction = ReduceMathClz32(node); | 465 reduction = ReduceMathClz32(node); |
| 446 break; | 466 break; |
| 447 case kMathCeil: | |
| 448 reduction = ReduceMathCeil(node); | |
| 449 break; | |
| 450 case kMathCos: | 467 case kMathCos: |
| 451 reduction = ReduceMathCos(node); | 468 reduction = ReduceMathCos(node); |
| 452 break; | 469 break; |
| 453 case kMathExp: | 470 case kMathExp: |
| 454 reduction = ReduceMathExp(node); | 471 reduction = ReduceMathExp(node); |
| 455 break; | 472 break; |
| 456 case kMathExpm1: | 473 case kMathExpm1: |
| 457 reduction = ReduceMathExpm1(node); | 474 reduction = ReduceMathExpm1(node); |
| 458 break; | 475 break; |
| 459 case kMathFloor: | 476 case kMathFloor: |
| (...skipping 16 matching lines...) Expand all Loading... |
| 476 break; | 493 break; |
| 477 case kMathLog2: | 494 case kMathLog2: |
| 478 reduction = ReduceMathLog2(node); | 495 reduction = ReduceMathLog2(node); |
| 479 break; | 496 break; |
| 480 case kMathMax: | 497 case kMathMax: |
| 481 reduction = ReduceMathMax(node); | 498 reduction = ReduceMathMax(node); |
| 482 break; | 499 break; |
| 483 case kMathMin: | 500 case kMathMin: |
| 484 reduction = ReduceMathMin(node); | 501 reduction = ReduceMathMin(node); |
| 485 break; | 502 break; |
| 486 case kMathCbrt: | 503 case kMathPow: |
| 487 reduction = ReduceMathCbrt(node); | 504 reduction = ReduceMathPow(node); |
| 488 break; | 505 break; |
| 489 case kMathRound: | 506 case kMathRound: |
| 490 reduction = ReduceMathRound(node); | 507 reduction = ReduceMathRound(node); |
| 491 break; | 508 break; |
| 492 case kMathSin: | 509 case kMathSin: |
| 493 reduction = ReduceMathSin(node); | 510 reduction = ReduceMathSin(node); |
| 494 break; | 511 break; |
| 495 case kMathSqrt: | 512 case kMathSqrt: |
| 496 reduction = ReduceMathSqrt(node); | 513 reduction = ReduceMathSqrt(node); |
| 497 break; | 514 break; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 } | 556 } |
| 540 | 557 |
| 541 | 558 |
| 542 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const { | 559 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const { |
| 543 return jsgraph()->simplified(); | 560 return jsgraph()->simplified(); |
| 544 } | 561 } |
| 545 | 562 |
| 546 } // namespace compiler | 563 } // namespace compiler |
| 547 } // namespace internal | 564 } // namespace internal |
| 548 } // namespace v8 | 565 } // namespace v8 |
| OLD | NEW |