[turbofan] The speculative number operations don't produce control.
The simplified SpeculativeNumber operators shouldn't be in the control chain at all. They are part of the effect chain to ensure that we can find a frame state for eager deoptimization. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2083503002 Cr-Commit-Position: refs/heads/master@{#37098}
This commit is contained in:
parent
ecc760a012
commit
bfdaff315f
@ -147,7 +147,7 @@ class JSBinopReduction final {
|
||||
DCHECK_EQ(1, op->EffectOutputCount());
|
||||
DCHECK_EQ(false, OperatorProperties::HasContextInput(op));
|
||||
DCHECK_EQ(1, op->ControlInputCount());
|
||||
DCHECK_EQ(1, op->ControlOutputCount());
|
||||
DCHECK_EQ(0, op->ControlOutputCount());
|
||||
DCHECK_EQ(0, OperatorProperties::GetFrameStateInputCount(op));
|
||||
DCHECK_EQ(2, op->ValueInputCount());
|
||||
|
||||
@ -165,7 +165,7 @@ class JSBinopReduction final {
|
||||
DCHECK(!user->IsDead());
|
||||
if (NodeProperties::IsControlEdge(edge)) {
|
||||
if (user->opcode() == IrOpcode::kIfSuccess) {
|
||||
user->ReplaceUses(node_);
|
||||
user->ReplaceUses(NodeProperties::GetControlInput(node_));
|
||||
user->Kill();
|
||||
} else {
|
||||
DCHECK_EQ(user->opcode(), IrOpcode::kIfException);
|
||||
|
@ -524,7 +524,7 @@ const Operator* SimplifiedOperatorBuilder::StoreBuffer(BufferAccess access) {
|
||||
BinaryOperationHints::Hint hint) { \
|
||||
return new (zone()) Operator1<BinaryOperationHints::Hint>( \
|
||||
IrOpcode::k##Name, Operator::kFoldable | Operator::kNoThrow, #Name, 2, \
|
||||
1, 1, 1, 1, 1, hint); \
|
||||
1, 1, 1, 1, 0, hint); \
|
||||
}
|
||||
SPECULATIVE_BINOP_LIST(SPECULATIVE_BINOP_DEF)
|
||||
#undef SPECULATIVE_BINOP_DEF
|
||||
@ -534,7 +534,7 @@ const Operator* SimplifiedOperatorBuilder::SpeculativeNumberEqual(
|
||||
return new (zone()) Operator1<CompareOperationHints::Hint>(
|
||||
IrOpcode::kSpeculativeNumberEqual,
|
||||
Operator::kFoldable | Operator::kNoThrow, "SpeculativeNumberEqual", 2, 1,
|
||||
1, 1, 1, 1, hint);
|
||||
1, 1, 1, 0, hint);
|
||||
}
|
||||
|
||||
const Operator* SimplifiedOperatorBuilder::SpeculativeNumberLessThan(
|
||||
@ -542,7 +542,7 @@ const Operator* SimplifiedOperatorBuilder::SpeculativeNumberLessThan(
|
||||
return new (zone()) Operator1<CompareOperationHints::Hint>(
|
||||
IrOpcode::kSpeculativeNumberLessThan,
|
||||
Operator::kFoldable | Operator::kNoThrow, "SpeculativeNumberLessThan", 2,
|
||||
1, 1, 1, 1, 1, hint);
|
||||
1, 1, 1, 1, 0, hint);
|
||||
}
|
||||
|
||||
const Operator* SimplifiedOperatorBuilder::SpeculativeNumberLessThanOrEqual(
|
||||
@ -550,7 +550,7 @@ const Operator* SimplifiedOperatorBuilder::SpeculativeNumberLessThanOrEqual(
|
||||
return new (zone()) Operator1<CompareOperationHints::Hint>(
|
||||
IrOpcode::kSpeculativeNumberLessThanOrEqual,
|
||||
Operator::kFoldable | Operator::kNoThrow,
|
||||
"SpeculativeNumberLessThanOrEqual", 2, 1, 1, 1, 1, 1, hint);
|
||||
"SpeculativeNumberLessThanOrEqual", 2, 1, 1, 1, 1, 0, hint);
|
||||
}
|
||||
|
||||
#define ACCESS_OP_LIST(V) \
|
||||
|
Loading…
Reference in New Issue
Block a user