Index: src/compiler/simplified-lowering.cc |
diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc |
index 1b2a9447aca868232dd6bc9105800e8de8d9729e..3f4b5b28a0ab460a2f55f7aa31215dc0c91da5f7 100644 |
--- a/src/compiler/simplified-lowering.cc |
+++ b/src/compiler/simplified-lowering.cc |
@@ -1344,21 +1344,16 @@ void SimplifiedLowering::DoStoreElement(Node* node) { |
} |
-Node* SimplifiedLowering::StringComparison(Node* node, bool requires_ordering) { |
- Runtime::FunctionId f = |
- requires_ordering ? Runtime::kStringCompare : Runtime::kStringEquals; |
- ExternalReference ref(f, jsgraph()->isolate()); |
- Operator::Properties props = node->op()->properties(); |
- // TODO(mstarzinger): We should call StringCompareStub here instead, once an |
- // interface descriptor is available for it. |
- CallDescriptor* desc = Linkage::GetRuntimeCallDescriptor(zone(), f, 2, props); |
- return graph()->NewNode(common()->Call(desc), |
- jsgraph()->CEntryStubConstant(1), |
- NodeProperties::GetValueInput(node, 0), |
- NodeProperties::GetValueInput(node, 1), |
- jsgraph()->ExternalConstant(ref), |
- jsgraph()->Int32Constant(2), |
- jsgraph()->NoContextConstant()); |
+Node* SimplifiedLowering::StringComparison(Node* node) { |
+ Operator::Properties properties = node->op()->properties(); |
+ Callable callable = CodeFactory::StringCompare(isolate()); |
+ CallDescriptor::Flags flags = CallDescriptor::kNoFlags; |
+ CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
+ isolate(), zone(), callable.descriptor(), 0, flags, properties); |
+ return graph()->NewNode( |
+ common()->Call(desc), jsgraph()->HeapConstant(callable.code()), |
+ NodeProperties::GetValueInput(node, 0), |
+ NodeProperties::GetValueInput(node, 1), jsgraph()->NoContextConstant()); |
} |
@@ -1624,21 +1619,21 @@ void SimplifiedLowering::DoShift(Node* node, Operator const* op) { |
void SimplifiedLowering::DoStringEqual(Node* node) { |
node->set_op(machine()->WordEqual()); |
- node->ReplaceInput(0, StringComparison(node, false)); |
+ node->ReplaceInput(0, StringComparison(node)); |
node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); |
} |
void SimplifiedLowering::DoStringLessThan(Node* node) { |
node->set_op(machine()->IntLessThan()); |
- node->ReplaceInput(0, StringComparison(node, true)); |
+ node->ReplaceInput(0, StringComparison(node)); |
node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); |
} |
void SimplifiedLowering::DoStringLessThanOrEqual(Node* node) { |
node->set_op(machine()->IntLessThanOrEqual()); |
- node->ReplaceInput(0, StringComparison(node, true)); |
+ node->ReplaceInput(0, StringComparison(node)); |
node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); |
} |