Index: src/compiler/js-typed-lowering.cc |
diff --git a/src/compiler/js-typed-lowering.cc b/src/compiler/js-typed-lowering.cc |
index a39b91ce7dc512d4f6c2510e818fe85850ad47c7..5ba81a4855ccd1cd2f41c13643d246b2d1ef80dd 100644 |
--- a/src/compiler/js-typed-lowering.cc |
+++ b/src/compiler/js-typed-lowering.cc |
@@ -107,32 +107,6 @@ class JSBinopReduction final { |
return lowering_->Changed(node_); |
} |
- Reduction ChangeToStringComparisonOperator(const Operator* op, |
- bool invert = false) { |
- if (node_->op()->ControlInputCount() > 0) { |
- lowering_->RelaxControls(node_); |
- } |
- // String comparison operators need effect and control inputs, so copy them |
- // over. |
- Node* effect = NodeProperties::GetEffectInput(node_); |
- Node* control = NodeProperties::GetControlInput(node_); |
- node_->ReplaceInput(2, effect); |
- node_->ReplaceInput(3, control); |
- |
- node_->TrimInputCount(4); |
- NodeProperties::ChangeOp(node_, op); |
- |
- if (invert) { |
- // Insert a boolean-not to invert the value. |
- Node* value = graph()->NewNode(simplified()->BooleanNot(), node_); |
- node_->ReplaceUses(value); |
- // Note: ReplaceUses() smashes all uses, so smash it back here. |
- value->ReplaceInput(0, node_); |
- return lowering_->Replace(value); |
- } |
- return lowering_->Changed(node_); |
- } |
- |
Reduction ChangeToPureOperator(const Operator* op, Type* type) { |
return ChangeToPureOperator(op, false, type); |
} |
@@ -477,7 +451,7 @@ Reduction JSTypedLowering::ReduceJSComparison(Node* node) { |
default: |
return NoChange(); |
} |
- r.ChangeToStringComparisonOperator(stringOp); |
+ r.ChangeToPureOperator(stringOp); |
return Changed(node); |
} |
if (r.OneInputCannotBe(Type::StringOrReceiver())) { |
@@ -531,8 +505,7 @@ Reduction JSTypedLowering::ReduceJSEqual(Node* node, bool invert) { |
return r.ChangeToPureOperator(simplified()->NumberEqual(), invert); |
} |
if (r.BothInputsAre(Type::String())) { |
- return r.ChangeToStringComparisonOperator(simplified()->StringEqual(), |
- invert); |
+ return r.ChangeToPureOperator(simplified()->StringEqual(), invert); |
} |
if (r.BothInputsAre(Type::Boolean())) { |
return r.ChangeToPureOperator(simplified()->ReferenceEqual(Type::Boolean()), |
@@ -611,8 +584,7 @@ Reduction JSTypedLowering::ReduceJSStrictEqual(Node* node, bool invert) { |
invert); |
} |
if (r.BothInputsAre(Type::String())) { |
- return r.ChangeToStringComparisonOperator(simplified()->StringEqual(), |
- invert); |
+ return r.ChangeToPureOperator(simplified()->StringEqual(), invert); |
} |
if (r.BothInputsAre(Type::NumberOrUndefined())) { |
return r.ChangeToPureOperator(simplified()->NumberEqual(), invert); |
@@ -625,10 +597,8 @@ Reduction JSTypedLowering::ReduceJSStrictEqual(Node* node, bool invert) { |
Reduction JSTypedLowering::ReduceJSToBoolean(Node* node) { |
Node* const input = node->InputAt(0); |
Type* const input_type = NodeProperties::GetType(input); |
- Node* const effect = NodeProperties::GetEffectInput(node); |
if (input_type->Is(Type::Boolean())) { |
// JSToBoolean(x:boolean) => x |
- ReplaceWithValue(node, input, effect); |
return Replace(input); |
} else if (input_type->Is(Type::OrderedNumber())) { |
// JSToBoolean(x:ordered-number) => BooleanNot(NumberEqual(x,#0)) |
@@ -642,11 +612,10 @@ Reduction JSTypedLowering::ReduceJSToBoolean(Node* node) { |
// JSToBoolean(x:string) => NumberLessThan(#0,x.length) |
FieldAccess const access = AccessBuilder::ForStringLength(); |
Node* length = graph()->NewNode(simplified()->LoadField(access), input, |
- effect, graph()->start()); |
+ graph()->start(), graph()->start()); |
ReplaceWithValue(node, node, length); |
node->ReplaceInput(0, jsgraph()->ZeroConstant()); |
node->ReplaceInput(1, length); |
- node->TrimInputCount(2); |
NodeProperties::ChangeOp(node, simplified()->NumberLessThan()); |
return Changed(node); |
} |