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/simplified-lowering.h" | 5 #include "src/compiler/simplified-lowering.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "src/address-map.h" | 9 #include "src/address-map.h" |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 1621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1632 access.base_is_tagged, access.machine_type.representation(), | 1632 access.base_is_tagged, access.machine_type.representation(), |
1633 access.type, node->InputAt(2)); | 1633 access.type, node->InputAt(2)); |
1634 if (write_barrier_kind < access.write_barrier_kind) { | 1634 if (write_barrier_kind < access.write_barrier_kind) { |
1635 access.write_barrier_kind = write_barrier_kind; | 1635 access.write_barrier_kind = write_barrier_kind; |
1636 NodeProperties::ChangeOp( | 1636 NodeProperties::ChangeOp( |
1637 node, jsgraph_->simplified()->StoreElement(access)); | 1637 node, jsgraph_->simplified()->StoreElement(access)); |
1638 } | 1638 } |
1639 } | 1639 } |
1640 return; | 1640 return; |
1641 } | 1641 } |
| 1642 case IrOpcode::kPlainPrimitiveToNumber: |
| 1643 ProcessInput(node, 0, UseInfo::AnyTagged()); |
| 1644 if (truncation.TruncatesToWord32()) { |
| 1645 SetOutput(node, MachineRepresentation::kWord32); |
| 1646 if (lower()) { |
| 1647 NodeProperties::ChangeOp(node, |
| 1648 simplified()->PlainPrimitiveToWord32()); |
| 1649 } |
| 1650 } else if (truncation.TruncatesToFloat64()) { |
| 1651 SetOutput(node, MachineRepresentation::kFloat64); |
| 1652 if (lower()) { |
| 1653 NodeProperties::ChangeOp(node, |
| 1654 simplified()->PlainPrimitiveToFloat64()); |
| 1655 } |
| 1656 } else { |
| 1657 SetOutput(node, MachineRepresentation::kTagged); |
| 1658 } |
| 1659 return; |
1642 case IrOpcode::kObjectIsCallable: | 1660 case IrOpcode::kObjectIsCallable: |
1643 case IrOpcode::kObjectIsNumber: | 1661 case IrOpcode::kObjectIsNumber: |
1644 case IrOpcode::kObjectIsReceiver: | 1662 case IrOpcode::kObjectIsReceiver: |
1645 case IrOpcode::kObjectIsSmi: | 1663 case IrOpcode::kObjectIsSmi: |
1646 case IrOpcode::kObjectIsString: | 1664 case IrOpcode::kObjectIsString: |
1647 case IrOpcode::kObjectIsUndetectable: { | 1665 case IrOpcode::kObjectIsUndetectable: { |
1648 ProcessInput(node, 0, UseInfo::AnyTagged()); | 1666 ProcessInput(node, 0, UseInfo::AnyTagged()); |
1649 SetOutput(node, MachineRepresentation::kBit); | 1667 SetOutput(node, MachineRepresentation::kBit); |
1650 return; | 1668 return; |
1651 } | 1669 } |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1801 // inference runs, so we do not have any real test coverage. | 1819 // inference runs, so we do not have any real test coverage. |
1802 // Simply fail here. | 1820 // Simply fail here. |
1803 case IrOpcode::kChangeFloat64ToInt32: | 1821 case IrOpcode::kChangeFloat64ToInt32: |
1804 case IrOpcode::kChangeFloat64ToUint32: | 1822 case IrOpcode::kChangeFloat64ToUint32: |
1805 case IrOpcode::kTruncateInt64ToInt32: | 1823 case IrOpcode::kTruncateInt64ToInt32: |
1806 case IrOpcode::kChangeFloat32ToFloat64: | 1824 case IrOpcode::kChangeFloat32ToFloat64: |
1807 case IrOpcode::kCheckedUint32ToInt32: | 1825 case IrOpcode::kCheckedUint32ToInt32: |
1808 case IrOpcode::kCheckedFloat64ToInt32: | 1826 case IrOpcode::kCheckedFloat64ToInt32: |
1809 case IrOpcode::kCheckedTaggedToInt32: | 1827 case IrOpcode::kCheckedTaggedToInt32: |
1810 case IrOpcode::kCheckedTaggedToFloat64: | 1828 case IrOpcode::kCheckedTaggedToFloat64: |
| 1829 case IrOpcode::kPlainPrimitiveToWord32: |
| 1830 case IrOpcode::kPlainPrimitiveToFloat64: |
1811 FATAL("Representation inference: unsupported opcodes."); | 1831 FATAL("Representation inference: unsupported opcodes."); |
1812 break; | 1832 break; |
1813 | 1833 |
1814 default: | 1834 default: |
1815 VisitInputs(node); | 1835 VisitInputs(node); |
1816 // Assume the output is tagged. | 1836 // Assume the output is tagged. |
1817 return SetOutput(node, MachineRepresentation::kTagged); | 1837 return SetOutput(node, MachineRepresentation::kTagged); |
1818 } | 1838 } |
1819 UNREACHABLE(); | 1839 UNREACHABLE(); |
1820 } | 1840 } |
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2819 isolate(), graph()->zone(), callable.descriptor(), 0, flags, | 2839 isolate(), graph()->zone(), callable.descriptor(), 0, flags, |
2820 Operator::kNoProperties); | 2840 Operator::kNoProperties); |
2821 to_number_operator_.set(common()->Call(desc)); | 2841 to_number_operator_.set(common()->Call(desc)); |
2822 } | 2842 } |
2823 return to_number_operator_.get(); | 2843 return to_number_operator_.get(); |
2824 } | 2844 } |
2825 | 2845 |
2826 } // namespace compiler | 2846 } // namespace compiler |
2827 } // namespace internal | 2847 } // namespace internal |
2828 } // namespace v8 | 2848 } // namespace v8 |
OLD | NEW |