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 1551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1562 NodeInfo* input_info = GetInfo(node->InputAt(0)); | 1562 NodeInfo* input_info = GetInfo(node->InputAt(0)); |
1563 if (input_info->representation() == MachineRepresentation::kBit) { | 1563 if (input_info->representation() == MachineRepresentation::kBit) { |
1564 // BooleanNot(x: kRepBit) => Word32Equal(x, #0) | 1564 // BooleanNot(x: kRepBit) => Word32Equal(x, #0) |
1565 node->AppendInput(jsgraph_->zone(), jsgraph_->Int32Constant(0)); | 1565 node->AppendInput(jsgraph_->zone(), jsgraph_->Int32Constant(0)); |
1566 NodeProperties::ChangeOp(node, lowering->machine()->Word32Equal()); | 1566 NodeProperties::ChangeOp(node, lowering->machine()->Word32Equal()); |
1567 } else if (CanBeTaggedPointer(input_info->representation())) { | 1567 } else if (CanBeTaggedPointer(input_info->representation())) { |
1568 // BooleanNot(x: kRepTagged) => WordEqual(x, #false) | 1568 // BooleanNot(x: kRepTagged) => WordEqual(x, #false) |
1569 node->AppendInput(jsgraph_->zone(), jsgraph_->FalseConstant()); | 1569 node->AppendInput(jsgraph_->zone(), jsgraph_->FalseConstant()); |
1570 NodeProperties::ChangeOp(node, lowering->machine()->WordEqual()); | 1570 NodeProperties::ChangeOp(node, lowering->machine()->WordEqual()); |
1571 } else { | 1571 } else { |
1572 DCHECK_EQ(MachineRepresentation::kNone, | 1572 DCHECK(!TypeOf(node->InputAt(0))->IsInhabited()); |
1573 input_info->representation()); | |
1574 DeferReplacement(node, lowering->jsgraph()->Int32Constant(0)); | 1573 DeferReplacement(node, lowering->jsgraph()->Int32Constant(0)); |
1575 } | 1574 } |
1576 } else { | 1575 } else { |
1577 // No input representation requirement; adapt during lowering. | 1576 // No input representation requirement; adapt during lowering. |
1578 ProcessInput(node, 0, UseInfo::AnyTruncatingToBool()); | 1577 ProcessInput(node, 0, UseInfo::AnyTruncatingToBool()); |
1579 SetOutput(node, MachineRepresentation::kBit); | 1578 SetOutput(node, MachineRepresentation::kBit); |
1580 } | 1579 } |
1581 return; | 1580 return; |
1582 } | 1581 } |
1583 case IrOpcode::kNumberEqual: { | 1582 case IrOpcode::kNumberEqual: { |
(...skipping 2163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3747 isolate(), graph()->zone(), callable.descriptor(), 0, flags, | 3746 isolate(), graph()->zone(), callable.descriptor(), 0, flags, |
3748 Operator::kNoProperties); | 3747 Operator::kNoProperties); |
3749 to_number_operator_.set(common()->Call(desc)); | 3748 to_number_operator_.set(common()->Call(desc)); |
3750 } | 3749 } |
3751 return to_number_operator_.get(); | 3750 return to_number_operator_.get(); |
3752 } | 3751 } |
3753 | 3752 |
3754 } // namespace compiler | 3753 } // namespace compiler |
3755 } // namespace internal | 3754 } // namespace internal |
3756 } // namespace v8 | 3755 } // namespace v8 |
OLD | NEW |