| Index: src/compiler/simplified-lowering.cc | 
| diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc | 
| index 4e89d88c48253dbd187ba63a6fd7c1dde0411ee6..ecfba7f5fa264e6842815ed65b9a4584085c3fc5 100644 | 
| --- a/src/compiler/simplified-lowering.cc | 
| +++ b/src/compiler/simplified-lowering.cc | 
| @@ -368,7 +368,8 @@ class RepresentationSelector { | 
| SelectParameters p = SelectParametersOf(node->op()); | 
| MachineType type = static_cast<MachineType>(output_type); | 
| if (type != p.type()) { | 
| -        node->set_op(lowering->common()->Select(type, p.hint())); | 
| +        NodeProperties::ChangeOp(node, | 
| +                                 lowering->common()->Select(type, p.hint())); | 
| } | 
|  | 
| // Convert inputs to the output representation of this select. | 
| @@ -399,7 +400,7 @@ class RepresentationSelector { | 
| // Update the phi operator. | 
| MachineType type = static_cast<MachineType>(output_type); | 
| if (type != OpParameter<MachineType>(node)) { | 
| -        node->set_op(lowering->common()->Phi(type, values)); | 
| +        NodeProperties::ChangeOp(node, lowering->common()->Phi(type, values)); | 
| } | 
|  | 
| // Convert inputs to the output representation of this phi. | 
| @@ -453,7 +454,8 @@ class RepresentationSelector { | 
| MachineTypeUnion input_type = GetInfo(node->InputAt(i))->output; | 
| (*types)[i] = static_cast<MachineType>(input_type); | 
| } | 
| -      node->set_op(jsgraph_->common()->TypedStateValues(types)); | 
| +      NodeProperties::ChangeOp(node, | 
| +                               jsgraph_->common()->TypedStateValues(types)); | 
| } | 
| SetOutput(node, kMachAnyTagged); | 
| } | 
| @@ -583,12 +585,12 @@ class RepresentationSelector { | 
| MachineTypeUnion input = GetInfo(node->InputAt(0))->output; | 
| if (input & kRepBit) { | 
| // BooleanNot(x: kRepBit) => Word32Equal(x, #0) | 
| -            node->set_op(lowering->machine()->Word32Equal()); | 
| node->AppendInput(jsgraph_->zone(), jsgraph_->Int32Constant(0)); | 
| +            NodeProperties::ChangeOp(node, lowering->machine()->Word32Equal()); | 
| } else { | 
| // BooleanNot(x: kRepTagged) => WordEqual(x, #false) | 
| -            node->set_op(lowering->machine()->WordEqual()); | 
| node->AppendInput(jsgraph_->zone(), jsgraph_->FalseConstant()); | 
| +            NodeProperties::ChangeOp(node, lowering->machine()->WordEqual()); | 
| } | 
| } else { | 
| // No input representation requirement; adapt during lowering. | 
| @@ -605,8 +607,8 @@ class RepresentationSelector { | 
| DeferReplacement(node, node->InputAt(0)); | 
| } else { | 
| // BooleanToNumber(x: kRepTagged) => WordEqual(x, #true) | 
| -            node->set_op(lowering->machine()->WordEqual()); | 
| node->AppendInput(jsgraph_->zone(), jsgraph_->TrueConstant()); | 
| +            NodeProperties::ChangeOp(node, lowering->machine()->WordEqual()); | 
| } | 
| } else { | 
| // No input representation requirement; adapt during lowering. | 
| @@ -622,15 +624,15 @@ class RepresentationSelector { | 
| if (BothInputsAre(node, Type::Signed32())) { | 
| // => signed Int32Cmp | 
| VisitInt32Cmp(node); | 
| -          if (lower()) node->set_op(Int32Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Int32Op(node)); | 
| } else if (BothInputsAre(node, Type::Unsigned32())) { | 
| // => unsigned Int32Cmp | 
| VisitUint32Cmp(node); | 
| -          if (lower()) node->set_op(Uint32Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Uint32Op(node)); | 
| } else { | 
| // => Float64Cmp | 
| VisitFloat64Cmp(node); | 
| -          if (lower()) node->set_op(Float64Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Float64Op(node)); | 
| } | 
| break; | 
| } | 
| @@ -641,27 +643,27 @@ class RepresentationSelector { | 
| if (CanLowerToInt32Binop(node, use)) { | 
| // => signed Int32Add/Sub | 
| VisitInt32Binop(node); | 
| -          if (lower()) node->set_op(Int32Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Int32Op(node)); | 
| } else if (CanLowerToInt32AdditiveBinop(node, use)) { | 
| // => signed Int32Add/Sub, truncating inputs | 
| ProcessTruncateWord32Input(node, 0, kTypeInt32); | 
| ProcessTruncateWord32Input(node, 1, kTypeInt32); | 
| SetOutput(node, kMachInt32); | 
| -          if (lower()) node->set_op(Int32Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Int32Op(node)); | 
| } else if (CanLowerToUint32Binop(node, use)) { | 
| // => unsigned Int32Add/Sub | 
| VisitUint32Binop(node); | 
| -          if (lower()) node->set_op(Uint32Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Uint32Op(node)); | 
| } else if (CanLowerToUint32AdditiveBinop(node, use)) { | 
| // => signed Int32Add/Sub, truncating inputs | 
| ProcessTruncateWord32Input(node, 0, kTypeUint32); | 
| ProcessTruncateWord32Input(node, 1, kTypeUint32); | 
| SetOutput(node, kMachUint32); | 
| -          if (lower()) node->set_op(Uint32Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Uint32Op(node)); | 
| } else { | 
| // => Float64Add/Sub | 
| VisitFloat64Binop(node); | 
| -          if (lower()) node->set_op(Float64Op(node)); | 
| +          if (lower()) NodeProperties::ChangeOp(node, Float64Op(node)); | 
| } | 
| break; | 
| } | 
| @@ -671,13 +673,13 @@ class RepresentationSelector { | 
| if (CanLowerToInt32Binop(node, use)) { | 
| // => signed Int32Mul | 
| VisitInt32Binop(node); | 
| -            if (lower()) node->set_op(Int32Op(node)); | 
| +            if (lower()) NodeProperties::ChangeOp(node, Int32Op(node)); | 
| break; | 
| } | 
| } | 
| // => Float64Mul | 
| VisitFloat64Binop(node); | 
| -        if (lower()) node->set_op(Float64Op(node)); | 
| +        if (lower()) NodeProperties::ChangeOp(node, Float64Op(node)); | 
| break; | 
| } | 
| case IrOpcode::kNumberDivide: { | 
| @@ -695,7 +697,7 @@ class RepresentationSelector { | 
| } | 
| // => Float64Div | 
| VisitFloat64Binop(node); | 
| -        if (lower()) node->set_op(Float64Op(node)); | 
| +        if (lower()) NodeProperties::ChangeOp(node, Float64Op(node)); | 
| break; | 
| } | 
| case IrOpcode::kNumberModulus: { | 
| @@ -713,7 +715,7 @@ class RepresentationSelector { | 
| } | 
| // => Float64Mod | 
| VisitFloat64Binop(node); | 
| -        if (lower()) node->set_op(Float64Op(node)); | 
| +        if (lower()) NodeProperties::ChangeOp(node, Float64Op(node)); | 
| break; | 
| } | 
| case IrOpcode::kNumberShiftLeft: { | 
| @@ -755,8 +757,9 @@ class RepresentationSelector { | 
| // TODO(turbofan): avoid a truncation with a smi check. | 
| VisitUnop(node, kTypeInt32 | kRepFloat64, kTypeInt32 | kRepWord32); | 
| if (lower()) { | 
| -            node->set_op(lowering->machine()->TruncateFloat64ToInt32( | 
| -                TruncationMode::kJavaScript)); | 
| +            NodeProperties::ChangeOp( | 
| +                node, lowering->machine()->TruncateFloat64ToInt32( | 
| +                          TruncationMode::kJavaScript)); | 
| } | 
| } | 
| break; | 
| @@ -785,8 +788,9 @@ class RepresentationSelector { | 
| // TODO(turbofan): avoid a truncation with a smi check. | 
| VisitUnop(node, kTypeUint32 | kRepFloat64, kTypeUint32 | kRepWord32); | 
| if (lower()) { | 
| -            node->set_op(lowering->machine()->TruncateFloat64ToInt32( | 
| -                TruncationMode::kJavaScript)); | 
| +            NodeProperties::ChangeOp( | 
| +                node, lowering->machine()->TruncateFloat64ToInt32( | 
| +                          TruncationMode::kJavaScript)); | 
| } | 
| } | 
| break; | 
| @@ -801,16 +805,18 @@ class RepresentationSelector { | 
| CallDescriptor* desc = Linkage::GetStubCallDescriptor( | 
| jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0, | 
| flags, properties); | 
| -          node->set_op(jsgraph_->common()->Call(desc)); | 
| node->InsertInput(jsgraph_->zone(), 0, | 
| jsgraph_->HeapConstant(callable.code())); | 
| node->AppendInput(jsgraph_->zone(), jsgraph_->NoContextConstant()); | 
| +          NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc)); | 
| } | 
| break; | 
| } | 
| case IrOpcode::kReferenceEqual: { | 
| VisitBinop(node, kMachAnyTagged, kRepBit); | 
| -        if (lower()) node->set_op(lowering->machine()->WordEqual()); | 
| +        if (lower()) { | 
| +          NodeProperties::ChangeOp(node, lowering->machine()->WordEqual()); | 
| +        } | 
| break; | 
| } | 
| case IrOpcode::kStringEqual: { | 
| @@ -1210,7 +1216,6 @@ void SimplifiedLowering::DoAllocate(Node* node) { | 
| Runtime::FunctionId f = Runtime::kAllocateInTargetSpace; | 
| Operator::Properties props = node->op()->properties(); | 
| CallDescriptor* desc = Linkage::GetRuntimeCallDescriptor(zone(), f, 2, props); | 
| -  node->set_op(common()->Call(desc)); | 
| ExternalReference ref(f, jsgraph()->isolate()); | 
| int32_t flags = AllocateTargetSpace::encode(space); | 
| node->InsertInput(graph()->zone(), 0, jsgraph()->CEntryStubConstant(1)); | 
| @@ -1218,14 +1223,15 @@ void SimplifiedLowering::DoAllocate(Node* node) { | 
| node->InsertInput(graph()->zone(), 3, jsgraph()->ExternalConstant(ref)); | 
| node->InsertInput(graph()->zone(), 4, jsgraph()->Int32Constant(2)); | 
| node->InsertInput(graph()->zone(), 5, jsgraph()->NoContextConstant()); | 
| +  NodeProperties::ChangeOp(node, common()->Call(desc)); | 
| } | 
|  | 
|  | 
| void SimplifiedLowering::DoLoadField(Node* node) { | 
| const FieldAccess& access = FieldAccessOf(node->op()); | 
| -  node->set_op(machine()->Load(access.machine_type)); | 
| Node* offset = jsgraph()->IntPtrConstant(access.offset - access.tag()); | 
| node->InsertInput(graph()->zone(), 1, offset); | 
| +  NodeProperties::ChangeOp(node, machine()->Load(access.machine_type)); | 
| } | 
|  | 
|  | 
| @@ -1234,10 +1240,10 @@ void SimplifiedLowering::DoStoreField(Node* node) { | 
| Type* type = NodeProperties::GetType(node->InputAt(1)); | 
| WriteBarrierKind kind = | 
| ComputeWriteBarrierKind(access.base_is_tagged, access.machine_type, type); | 
| -  node->set_op( | 
| -      machine()->Store(StoreRepresentation(access.machine_type, kind))); | 
| Node* offset = jsgraph()->IntPtrConstant(access.offset - access.tag()); | 
| node->InsertInput(graph()->zone(), 1, offset); | 
| +  NodeProperties::ChangeOp( | 
| +      node, machine()->Store(StoreRepresentation(access.machine_type, kind))); | 
| } | 
|  | 
|  | 
| @@ -1311,13 +1317,13 @@ void SimplifiedLowering::DoLoadBuffer(Node* node, MachineType output_type, | 
| NodeProperties::ReplaceUses(node, node, ephi); | 
|  | 
| // Turn the {node} into a Phi. | 
| -    node->set_op(common()->Phi(output_type, 2)); | 
| node->ReplaceInput(0, vtrue); | 
| node->ReplaceInput(1, vfalse); | 
| node->ReplaceInput(2, merge); | 
| node->TrimInputCount(3); | 
| +    NodeProperties::ChangeOp(node, common()->Phi(output_type, 2)); | 
| } else { | 
| -    node->set_op(machine()->CheckedLoad(type)); | 
| +    NodeProperties::ChangeOp(node, machine()->CheckedLoad(type)); | 
| } | 
| } | 
|  | 
| @@ -1325,25 +1331,26 @@ void SimplifiedLowering::DoLoadBuffer(Node* node, MachineType output_type, | 
| void SimplifiedLowering::DoStoreBuffer(Node* node) { | 
| DCHECK_EQ(IrOpcode::kStoreBuffer, node->opcode()); | 
| MachineType const type = BufferAccessOf(node->op()).machine_type(); | 
| -  node->set_op(machine()->CheckedStore(type)); | 
| +  NodeProperties::ChangeOp(node, machine()->CheckedStore(type)); | 
| } | 
|  | 
|  | 
| void SimplifiedLowering::DoLoadElement(Node* node) { | 
| const ElementAccess& access = ElementAccessOf(node->op()); | 
| -  node->set_op(machine()->Load(access.machine_type)); | 
| node->ReplaceInput(1, ComputeIndex(access, node->InputAt(1))); | 
| +  NodeProperties::ChangeOp(node, machine()->Load(access.machine_type)); | 
| } | 
|  | 
|  | 
| void SimplifiedLowering::DoStoreElement(Node* node) { | 
| const ElementAccess& access = ElementAccessOf(node->op()); | 
| Type* type = NodeProperties::GetType(node->InputAt(2)); | 
| -  node->set_op(machine()->Store( | 
| -      StoreRepresentation(access.machine_type, | 
| -                          ComputeWriteBarrierKind(access.base_is_tagged, | 
| -                                                  access.machine_type, type)))); | 
| node->ReplaceInput(1, ComputeIndex(access, node->InputAt(1))); | 
| +  NodeProperties::ChangeOp( | 
| +      node, machine()->Store(StoreRepresentation( | 
| +                access.machine_type, | 
| +                ComputeWriteBarrierKind(access.base_is_tagged, | 
| +                                        access.machine_type, type)))); | 
| } | 
|  | 
|  | 
| @@ -1610,34 +1617,34 @@ Node* SimplifiedLowering::Uint32Mod(Node* const node) { | 
|  | 
|  | 
| void SimplifiedLowering::DoShift(Node* node, Operator const* op) { | 
| -  node->set_op(op); | 
| Node* const rhs = NodeProperties::GetValueInput(node, 1); | 
| Type* const rhs_type = NodeProperties::GetType(rhs); | 
| if (!rhs_type->Is(zero_thirtyone_range_)) { | 
| node->ReplaceInput(1, graph()->NewNode(machine()->Word32And(), rhs, | 
| jsgraph()->Int32Constant(0x1f))); | 
| } | 
| +  NodeProperties::ChangeOp(node, op); | 
| } | 
|  | 
|  | 
| void SimplifiedLowering::DoStringEqual(Node* node) { | 
| -  node->set_op(machine()->WordEqual()); | 
| node->ReplaceInput(0, StringComparison(node)); | 
| node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); | 
| +  NodeProperties::ChangeOp(node, machine()->WordEqual()); | 
| } | 
|  | 
|  | 
| void SimplifiedLowering::DoStringLessThan(Node* node) { | 
| -  node->set_op(machine()->IntLessThan()); | 
| node->ReplaceInput(0, StringComparison(node)); | 
| node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); | 
| +  NodeProperties::ChangeOp(node, machine()->IntLessThan()); | 
| } | 
|  | 
|  | 
| void SimplifiedLowering::DoStringLessThanOrEqual(Node* node) { | 
| -  node->set_op(machine()->IntLessThanOrEqual()); | 
| node->ReplaceInput(0, StringComparison(node)); | 
| node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); | 
| +  NodeProperties::ChangeOp(node, machine()->IntLessThanOrEqual()); | 
| } | 
|  | 
| }  // namespace compiler | 
|  |