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/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
(...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1037 if (lower()) { | 1037 if (lower()) { |
1038 // StringEqual(x, y) => Call(StringEqualStub, x, y, no-context) | 1038 // StringEqual(x, y) => Call(StringEqualStub, x, y, no-context) |
1039 Operator::Properties properties = node->op()->properties(); | 1039 Operator::Properties properties = node->op()->properties(); |
1040 Callable callable = CodeFactory::StringEqual(jsgraph_->isolate()); | 1040 Callable callable = CodeFactory::StringEqual(jsgraph_->isolate()); |
1041 CallDescriptor::Flags flags = CallDescriptor::kNoFlags; | 1041 CallDescriptor::Flags flags = CallDescriptor::kNoFlags; |
1042 CallDescriptor* desc = Linkage::GetStubCallDescriptor( | 1042 CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
1043 jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0, | 1043 jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0, |
1044 flags, properties); | 1044 flags, properties); |
1045 node->InsertInput(jsgraph_->zone(), 0, | 1045 node->InsertInput(jsgraph_->zone(), 0, |
1046 jsgraph_->HeapConstant(callable.code())); | 1046 jsgraph_->HeapConstant(callable.code())); |
1047 node->InsertInput(jsgraph_->zone(), 3, jsgraph_->NoContextConstant()); | 1047 node->AppendInput(jsgraph_->zone(), jsgraph_->NoContextConstant()); |
1048 NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc)); | 1048 NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc)); |
1049 } | 1049 } |
1050 break; | 1050 break; |
1051 } | 1051 } |
1052 case IrOpcode::kStringLessThan: { | 1052 case IrOpcode::kStringLessThan: { |
1053 VisitBinop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged); | 1053 VisitBinop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged); |
1054 if (lower()) { | 1054 if (lower()) { |
1055 // StringLessThan(x, y) => Call(StringLessThanStub, x, y, no-context) | 1055 // StringLessThan(x, y) => Call(StringLessThanStub, x, y, no-context) |
1056 Operator::Properties properties = node->op()->properties(); | 1056 Operator::Properties properties = node->op()->properties(); |
1057 Callable callable = CodeFactory::StringLessThan(jsgraph_->isolate()); | 1057 Callable callable = CodeFactory::StringLessThan(jsgraph_->isolate()); |
1058 CallDescriptor::Flags flags = CallDescriptor::kNoFlags; | 1058 CallDescriptor::Flags flags = CallDescriptor::kNoFlags; |
1059 CallDescriptor* desc = Linkage::GetStubCallDescriptor( | 1059 CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
1060 jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0, | 1060 jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0, |
1061 flags, properties); | 1061 flags, properties); |
1062 node->InsertInput(jsgraph_->zone(), 0, | 1062 node->InsertInput(jsgraph_->zone(), 0, |
1063 jsgraph_->HeapConstant(callable.code())); | 1063 jsgraph_->HeapConstant(callable.code())); |
1064 node->InsertInput(jsgraph_->zone(), 3, jsgraph_->NoContextConstant()); | 1064 node->AppendInput(jsgraph_->zone(), jsgraph_->NoContextConstant()); |
1065 NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc)); | 1065 NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc)); |
1066 } | 1066 } |
1067 break; | 1067 break; |
1068 } | 1068 } |
1069 case IrOpcode::kStringLessThanOrEqual: { | 1069 case IrOpcode::kStringLessThanOrEqual: { |
1070 VisitBinop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged); | 1070 VisitBinop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged); |
1071 if (lower()) { | 1071 if (lower()) { |
1072 // StringLessThanOrEqual(x, y) | 1072 // StringLessThanOrEqual(x, y) |
1073 // => Call(StringLessThanOrEqualStub, x, y, no-context) | 1073 // => Call(StringLessThanOrEqualStub, x, y, no-context) |
1074 Operator::Properties properties = node->op()->properties(); | 1074 Operator::Properties properties = node->op()->properties(); |
1075 Callable callable = | 1075 Callable callable = |
1076 CodeFactory::StringLessThanOrEqual(jsgraph_->isolate()); | 1076 CodeFactory::StringLessThanOrEqual(jsgraph_->isolate()); |
1077 CallDescriptor::Flags flags = CallDescriptor::kNoFlags; | 1077 CallDescriptor::Flags flags = CallDescriptor::kNoFlags; |
1078 CallDescriptor* desc = Linkage::GetStubCallDescriptor( | 1078 CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
1079 jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0, | 1079 jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0, |
1080 flags, properties); | 1080 flags, properties); |
1081 node->InsertInput(jsgraph_->zone(), 0, | 1081 node->InsertInput(jsgraph_->zone(), 0, |
1082 jsgraph_->HeapConstant(callable.code())); | 1082 jsgraph_->HeapConstant(callable.code())); |
1083 node->InsertInput(jsgraph_->zone(), 3, jsgraph_->NoContextConstant()); | 1083 node->AppendInput(jsgraph_->zone(), jsgraph_->NoContextConstant()); |
1084 NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc)); | 1084 NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc)); |
1085 } | 1085 } |
1086 break; | 1086 break; |
1087 } | 1087 } |
1088 case IrOpcode::kStringToNumber: { | 1088 case IrOpcode::kStringToNumber: { |
1089 VisitUnop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged); | 1089 VisitUnop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged); |
1090 if (lower()) { | 1090 if (lower()) { |
1091 // StringToNumber(x) => Call(StringToNumberStub, x, no-context) | 1091 // StringToNumber(x) => Call(StringToNumberStub, x, no-context) |
1092 Operator::Properties properties = node->op()->properties(); | 1092 Operator::Properties properties = node->op()->properties(); |
1093 Callable callable = CodeFactory::StringToNumber(jsgraph_->isolate()); | 1093 Callable callable = CodeFactory::StringToNumber(jsgraph_->isolate()); |
(...skipping 1084 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2178 if (!rhs_type->Is(type_cache_.kZeroToThirtyOne)) { | 2178 if (!rhs_type->Is(type_cache_.kZeroToThirtyOne)) { |
2179 node->ReplaceInput(1, graph()->NewNode(machine()->Word32And(), rhs, | 2179 node->ReplaceInput(1, graph()->NewNode(machine()->Word32And(), rhs, |
2180 jsgraph()->Int32Constant(0x1f))); | 2180 jsgraph()->Int32Constant(0x1f))); |
2181 } | 2181 } |
2182 NodeProperties::ChangeOp(node, op); | 2182 NodeProperties::ChangeOp(node, op); |
2183 } | 2183 } |
2184 | 2184 |
2185 } // namespace compiler | 2185 } // namespace compiler |
2186 } // namespace internal | 2186 } // namespace internal |
2187 } // namespace v8 | 2187 } // namespace v8 |
OLD | NEW |