| 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/access-builder.h" | 5 #include "src/compiler/access-builder.h" |
| 6 #include "src/compiler/graph-inl.h" | 6 #include "src/compiler/graph-inl.h" |
| 7 #include "src/compiler/js-typed-lowering.h" | 7 #include "src/compiler/js-typed-lowering.h" |
| 8 #include "src/compiler/node-aux-data-inl.h" | 8 #include "src/compiler/node-aux-data-inl.h" |
| 9 #include "src/compiler/node-properties-inl.h" | 9 #include "src/compiler/node-properties-inl.h" |
| 10 #include "src/types.h" | 10 #include "src/types.h" |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 case IrOpcode::kJSMultiply: | 580 case IrOpcode::kJSMultiply: |
| 581 return ReduceNumberBinop(node, simplified()->NumberMultiply()); | 581 return ReduceNumberBinop(node, simplified()->NumberMultiply()); |
| 582 case IrOpcode::kJSDivide: | 582 case IrOpcode::kJSDivide: |
| 583 return ReduceNumberBinop(node, simplified()->NumberDivide()); | 583 return ReduceNumberBinop(node, simplified()->NumberDivide()); |
| 584 case IrOpcode::kJSModulus: | 584 case IrOpcode::kJSModulus: |
| 585 return ReduceNumberBinop(node, simplified()->NumberModulus()); | 585 return ReduceNumberBinop(node, simplified()->NumberModulus()); |
| 586 case IrOpcode::kJSUnaryNot: { | 586 case IrOpcode::kJSUnaryNot: { |
| 587 Reduction result = ReduceJSToBooleanInput(node->InputAt(0)); | 587 Reduction result = ReduceJSToBooleanInput(node->InputAt(0)); |
| 588 Node* value; | 588 Node* value; |
| 589 if (result.Changed()) { | 589 if (result.Changed()) { |
| 590 // !x => BooleanNot(x) | 590 // JSUnaryNot(x) => BooleanNot(x) |
| 591 value = | 591 value = |
| 592 graph()->NewNode(simplified()->BooleanNot(), result.replacement()); | 592 graph()->NewNode(simplified()->BooleanNot(), result.replacement()); |
| 593 NodeProperties::ReplaceWithValue(node, value); | 593 NodeProperties::ReplaceWithValue(node, value); |
| 594 return Changed(value); | 594 return Changed(value); |
| 595 } else { | 595 } else { |
| 596 // !x => BooleanNot(JSToBoolean(x)) | 596 // JSUnaryNot(x) => BooleanNot(JSToBoolean(x)) |
| 597 value = graph()->NewNode(simplified()->BooleanNot(), node); | 597 value = graph()->NewNode(simplified()->BooleanNot(), node); |
| 598 node->set_op(javascript()->ToBoolean()); | 598 node->set_op(javascript()->ToBoolean()); |
| 599 NodeProperties::ReplaceWithValue(node, value, node); | 599 NodeProperties::ReplaceWithValue(node, value, node); |
| 600 // Note: ReplaceUses() smashes all uses, so smash it back here. | 600 // Note: ReplaceUses() smashes all uses, so smash it back here. |
| 601 value->ReplaceInput(0, node); | 601 value->ReplaceInput(0, node); |
| 602 return ReplaceWith(value); | 602 return Changed(node); |
| 603 } | 603 } |
| 604 } | 604 } |
| 605 case IrOpcode::kJSToBoolean: | 605 case IrOpcode::kJSToBoolean: |
| 606 return ReplaceWithReduction(node, | 606 return ReplaceWithReduction(node, |
| 607 ReduceJSToBooleanInput(node->InputAt(0))); | 607 ReduceJSToBooleanInput(node->InputAt(0))); |
| 608 case IrOpcode::kJSToNumber: | 608 case IrOpcode::kJSToNumber: |
| 609 return ReplaceWithReduction(node, | 609 return ReplaceWithReduction(node, |
| 610 ReduceJSToNumberInput(node->InputAt(0))); | 610 ReduceJSToNumberInput(node->InputAt(0))); |
| 611 case IrOpcode::kJSToString: | 611 case IrOpcode::kJSToString: |
| 612 return ReplaceWithReduction(node, | 612 return ReplaceWithReduction(node, |
| 613 ReduceJSToStringInput(node->InputAt(0))); | 613 ReduceJSToStringInput(node->InputAt(0))); |
| 614 case IrOpcode::kJSLoadProperty: | 614 case IrOpcode::kJSLoadProperty: |
| 615 return ReduceJSPropertyLoad(node); | 615 return ReduceJSPropertyLoad(node); |
| 616 default: | 616 default: |
| 617 break; | 617 break; |
| 618 } | 618 } |
| 619 return NoChange(); | 619 return NoChange(); |
| 620 } | 620 } |
| 621 } | 621 } |
| 622 } | 622 } |
| 623 } // namespace v8::internal::compiler | 623 } // namespace v8::internal::compiler |
| OLD | NEW |