Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Unified Diff: src/compiler/js-typed-lowering.cc

Issue 1366753003: [turbofan] Make Node::set_op safer via wrapper. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/js-intrinsic-lowering.cc ('k') | src/compiler/machine-operator-reducer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/js-typed-lowering.cc
diff --git a/src/compiler/js-typed-lowering.cc b/src/compiler/js-typed-lowering.cc
index c5d03d117b8abf57c1e5d2bea8c7127ef06e4742..db8f618b8af945bfcd94bb941ab464d408db32b3 100644
--- a/src/compiler/js-typed-lowering.cc
+++ b/src/compiler/js-typed-lowering.cc
@@ -163,7 +163,7 @@ class JSBinopReduction final {
// Remove the inputs corresponding to context, effect, and control.
NodeProperties::RemoveNonValueInputs(node_);
// Finally, update the operator to the new one.
- node_->set_op(op);
+ NodeProperties::ChangeOp(node_, op);
// TODO(jarin): Replace the explicit typing hack with a call to some method
// that encapsulates changing the operator and re-typing.
@@ -362,7 +362,7 @@ class JSBinopReduction final {
NodeProperties::RemoveType(exception_merge);
exception_merge->ReplaceInput(0, left_exception);
exception_merge->ReplaceInput(1, right_exception);
- exception_merge->set_op(common()->Merge(2));
+ NodeProperties::ChangeOp(exception_merge, common()->Merge(2));
*left_result = left_conv;
*right_result = right_conv;
@@ -413,7 +413,7 @@ Reduction JSTypedLowering::ReduceJSAdd(Node* node) {
node->RemoveInput(NodeProperties::FirstFrameStateIndex(node) + 1);
node->InsertInput(graph()->zone(), 0,
jsgraph()->HeapConstant(callable.code()));
- node->set_op(common()->Call(desc));
+ NodeProperties::ChangeOp(node, common()->Call(desc));
return Changed(node);
}
return NoChange();
@@ -629,14 +629,13 @@ Reduction JSTypedLowering::ReduceJSUnaryNot(Node* node) {
Type* const input_type = NodeProperties::GetType(input);
if (input_type->Is(Type::Boolean())) {
// JSUnaryNot(x:boolean) => BooleanNot(x)
- node->set_op(simplified()->BooleanNot());
node->TrimInputCount(1);
+ NodeProperties::ChangeOp(node, simplified()->BooleanNot());
return Changed(node);
} else if (input_type->Is(Type::OrderedNumber())) {
// JSUnaryNot(x:number) => NumberEqual(x,#0)
- node->set_op(simplified()->NumberEqual());
node->ReplaceInput(1, jsgraph()->ZeroConstant());
- DCHECK_EQ(2, node->InputCount());
+ NodeProperties::ChangeOp(node, simplified()->NumberEqual());
return Changed(node);
} else if (input_type->Is(Type::String())) {
// JSUnaryNot(x:string) => NumberEqual(x.length,#0)
@@ -645,11 +644,10 @@ Reduction JSTypedLowering::ReduceJSUnaryNot(Node* node) {
// chain) because we assume String::length to be immutable.
Node* length = graph()->NewNode(simplified()->LoadField(access), input,
graph()->start(), graph()->start());
- node->set_op(simplified()->NumberEqual());
node->ReplaceInput(0, length);
node->ReplaceInput(1, jsgraph()->ZeroConstant());
+ NodeProperties::ChangeOp(node, simplified()->NumberEqual());
ReplaceWithValue(node, node, length);
- DCHECK_EQ(2, node->InputCount());
return Changed(node);
}
return NoChange();
@@ -664,10 +662,10 @@ Reduction JSTypedLowering::ReduceJSToBoolean(Node* node) {
return Replace(input);
} else if (input_type->Is(Type::OrderedNumber())) {
// JSToBoolean(x:ordered-number) => BooleanNot(NumberEqual(x,#0))
- node->set_op(simplified()->BooleanNot());
node->ReplaceInput(0, graph()->NewNode(simplified()->NumberEqual(), input,
jsgraph()->ZeroConstant()));
node->TrimInputCount(1);
+ NodeProperties::ChangeOp(node, simplified()->BooleanNot());
return Changed(node);
} else if (input_type->Is(Type::String())) {
// JSToBoolean(x:string) => NumberLessThan(#0,x.length)
@@ -676,10 +674,9 @@ Reduction JSTypedLowering::ReduceJSToBoolean(Node* node) {
// chain) because we assume String::length to be immutable.
Node* length = graph()->NewNode(simplified()->LoadField(access), input,
graph()->start(), graph()->start());
- node->set_op(simplified()->NumberLessThan());
node->ReplaceInput(0, jsgraph()->ZeroConstant());
node->ReplaceInput(1, length);
- DCHECK_EQ(2, node->InputCount());
+ NodeProperties::ChangeOp(node, simplified()->NumberLessThan());
return Changed(node);
}
return NoChange();
@@ -908,21 +905,22 @@ Reduction JSTypedLowering::ReduceJSStoreProperty(Node* node) {
}
// Check if we can avoid the bounds check.
if (key_type->Min() >= 0 && key_type->Max() < array->length_value()) {
- node->set_op(simplified()->StoreElement(
- AccessBuilder::ForTypedArrayElement(array->type(), true)));
node->ReplaceInput(0, buffer);
DCHECK_EQ(key, node->InputAt(1));
node->ReplaceInput(2, value);
node->ReplaceInput(3, effect);
node->ReplaceInput(4, control);
node->TrimInputCount(5);
+ NodeProperties::ChangeOp(
+ node,
+ simplified()->StoreElement(
+ AccessBuilder::ForTypedArrayElement(array->type(), true)));
RelaxControls(node);
return Changed(node);
}
// Compute byte offset.
Node* offset = Word32Shl(key, static_cast<int>(k));
// Turn into a StoreBuffer operation.
- node->set_op(simplified()->StoreBuffer(access));
node->ReplaceInput(0, buffer);
node->ReplaceInput(1, offset);
node->ReplaceInput(2, length);
@@ -930,6 +928,7 @@ Reduction JSTypedLowering::ReduceJSStoreProperty(Node* node) {
node->ReplaceInput(4, effect);
node->ReplaceInput(5, control);
node->TrimInputCount(6);
+ NodeProperties::ChangeOp(node, simplified()->StoreBuffer(access));
RelaxControls(node);
return Changed(node);
}
@@ -951,11 +950,11 @@ Reduction JSTypedLowering::ReduceJSLoadContext(Node* node) {
AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX)),
NodeProperties::GetValueInput(node, 0), effect, control));
}
- node->set_op(
- simplified()->LoadField(AccessBuilder::ForContextSlot(access.index())));
node->ReplaceInput(1, effect);
node->ReplaceInput(2, control);
- DCHECK_EQ(3, node->InputCount());
+ NodeProperties::ChangeOp(
+ node,
+ simplified()->LoadField(AccessBuilder::ForContextSlot(access.index())));
return Changed(node);
}
@@ -972,10 +971,10 @@ Reduction JSTypedLowering::ReduceJSStoreContext(Node* node) {
AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX)),
NodeProperties::GetValueInput(node, 0), effect, control));
}
- node->set_op(
- simplified()->StoreField(AccessBuilder::ForContextSlot(access.index())));
node->RemoveInput(2);
- DCHECK_EQ(4, node->InputCount());
+ NodeProperties::ChangeOp(
+ node,
+ simplified()->StoreField(AccessBuilder::ForContextSlot(access.index())));
return Changed(node);
}
@@ -1007,8 +1006,9 @@ Reduction JSTypedLowering::ReduceJSLoadDynamicGlobal(Node* node) {
check_true);
Node* if_true = graph()->NewNode(common()->IfTrue(), branch);
Node* if_false = graph()->NewNode(common()->IfFalse(), branch);
- check_false->set_op(common()->Merge(check_false->InputCount() + 1));
check_false->AppendInput(graph()->zone(), if_false);
+ NodeProperties::ChangeOp(check_false,
+ common()->Merge(check_false->InputCount()));
check_true = if_true;
}
@@ -1066,8 +1066,9 @@ Reduction JSTypedLowering::ReduceJSLoadDynamicContext(Node* node) {
check_true);
Node* if_true = graph()->NewNode(common()->IfTrue(), branch);
Node* if_false = graph()->NewNode(common()->IfFalse(), branch);
- check_false->set_op(common()->Merge(check_false->InputCount() + 1));
check_false->AppendInput(graph()->zone(), if_false);
+ NodeProperties::ChangeOp(check_false,
+ common()->Merge(check_false->InputCount()));
check_true = if_true;
}
@@ -1115,7 +1116,7 @@ Reduction JSTypedLowering::ReduceJSCreateClosure(Node* node) {
Node* stub_code = jsgraph()->HeapConstant(callable.code());
node->InsertInput(graph()->zone(), 0, stub_code);
node->InsertInput(graph()->zone(), 1, jsgraph()->HeapConstant(shared));
- node->set_op(new_op);
+ NodeProperties::ChangeOp(node, new_op);
return Changed(node);
}
@@ -1145,7 +1146,7 @@ Reduction JSTypedLowering::ReduceJSCreateLiteralArray(Node* node) {
const Operator* new_op = common()->Call(desc);
Node* stub_code = jsgraph()->HeapConstant(callable.code());
node->InsertInput(graph()->zone(), 0, stub_code);
- node->set_op(new_op);
+ NodeProperties::ChangeOp(node, new_op);
return Changed(node);
}
@@ -1175,7 +1176,7 @@ Reduction JSTypedLowering::ReduceJSCreateLiteralObject(Node* node) {
Node* stub_code = jsgraph()->HeapConstant(callable.code());
node->InsertInput(graph()->zone(), 3, jsgraph()->Constant(flags));
node->InsertInput(graph()->zone(), 0, stub_code);
- node->set_op(new_op);
+ NodeProperties::ChangeOp(node, new_op);
return Changed(node);
}
@@ -1209,8 +1210,8 @@ Reduction JSTypedLowering::ReduceJSCreateWithContext(Node* node) {
ReplaceWithValue(node, node, a.effect());
node->ReplaceInput(0, a.allocation());
node->ReplaceInput(1, a.effect());
- node->set_op(common()->Finish(1));
node->TrimInputCount(2);
+ NodeProperties::ChangeOp(node, common()->Finish(1));
return Changed(node);
}
return NoChange();
@@ -1248,8 +1249,8 @@ Reduction JSTypedLowering::ReduceJSCreateBlockContext(Node* node) {
ReplaceWithValue(node, node, a.effect());
node->ReplaceInput(0, a.allocation());
node->ReplaceInput(1, a.effect());
- node->set_op(common()->Finish(1));
node->TrimInputCount(2);
+ NodeProperties::ChangeOp(node, common()->Finish(1));
return Changed(node);
}
return NoChange();
@@ -1280,8 +1281,9 @@ Reduction JSTypedLowering::ReduceJSCallFunction(Node* node) {
if (is_strict(p.language_mode())) {
flags |= CallDescriptor::kSupportsTailCalls;
}
- node->set_op(common()->Call(Linkage::GetJSCallDescriptor(
- graph()->zone(), false, 1 + arity, flags)));
+ NodeProperties::ChangeOp(node,
+ common()->Call(Linkage::GetJSCallDescriptor(
+ graph()->zone(), false, 1 + arity, flags)));
return Changed(node);
}
}
@@ -1291,8 +1293,8 @@ Reduction JSTypedLowering::ReduceJSCallFunction(Node* node) {
Reduction JSTypedLowering::ReduceJSForInDone(Node* node) {
DCHECK_EQ(IrOpcode::kJSForInDone, node->opcode());
- node->set_op(machine()->Word32Equal());
node->TrimInputCount(2);
+ NodeProperties::ChangeOp(node, machine()->Word32Equal());
return Changed(node);
}
@@ -1540,20 +1542,19 @@ Reduction JSTypedLowering::ReduceJSForInNext(Node* node) {
control = graph()->NewNode(common()->Merge(2), if_true0, if_false0);
effect = graph()->NewNode(common()->EffectPhi(2), etrue0, efalse0, control);
ReplaceWithValue(node, node, effect, control);
- node->set_op(common()->Phi(kMachAnyTagged, 2));
node->ReplaceInput(0, vtrue0);
node->ReplaceInput(1, vfalse0);
node->ReplaceInput(2, control);
node->TrimInputCount(3);
+ NodeProperties::ChangeOp(node, common()->Phi(kMachAnyTagged, 2));
return Changed(node);
}
Reduction JSTypedLowering::ReduceJSForInStep(Node* node) {
DCHECK_EQ(IrOpcode::kJSForInStep, node->opcode());
- node->set_op(machine()->Int32Add());
node->ReplaceInput(1, jsgraph()->Int32Constant(1));
- DCHECK_EQ(2, node->InputCount());
+ NodeProperties::ChangeOp(node, machine()->Int32Add());
return Changed(node);
}
« no previous file with comments | « src/compiler/js-intrinsic-lowering.cc ('k') | src/compiler/machine-operator-reducer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698