Chromium Code Reviews| Index: src/compiler/simplified-lowering.cc |
| diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc |
| index 06df207149cccaf3d71405360b3695cf8fd093d0..3c3e47e0c08b3d5b62a0d93f81a30cd55e6f865b 100644 |
| --- a/src/compiler/simplified-lowering.cc |
| +++ b/src/compiler/simplified-lowering.cc |
| @@ -188,6 +188,11 @@ class RepresentationSelector { |
| } |
| } |
| + void ProcessEffect(Node* node) { |
|
titzer
2014/09/03 09:03:57
Can we make this ProcessRemainingInputs(Node*, int
Michael Starzinger
2014/09/03 10:49:58
Done.
|
| + DCHECK_EQ(1, OperatorProperties::GetEffectInputCount(node->op())); |
| + Enqueue(NodeProperties::GetEffectInput(node)); // Effect input: just visit |
| + } |
| + |
| // The default, most general visitation case. For {node}, process all value, |
| // context, effect, and control inputs, assuming that value inputs should have |
| // {kRepTagged} representation and can observe all output values {kTypeAny}. |
| @@ -529,6 +534,7 @@ class RepresentationSelector { |
| case IrOpcode::kLoadField: { |
| FieldAccess access = FieldAccessOf(node->op()); |
| ProcessInput(node, 0, changer_->TypeForBasePointer(access)); |
| + ProcessEffect(node); |
| SetOutput(node, access.machine_type); |
| if (lower()) lowering->DoLoadField(node); |
| break; |
| @@ -537,6 +543,7 @@ class RepresentationSelector { |
| FieldAccess access = FieldAccessOf(node->op()); |
| ProcessInput(node, 0, changer_->TypeForBasePointer(access)); |
| ProcessInput(node, 1, access.machine_type); |
| + ProcessEffect(node); |
| SetOutput(node, 0); |
| if (lower()) lowering->DoStoreField(node); |
| break; |
| @@ -545,6 +552,7 @@ class RepresentationSelector { |
| ElementAccess access = ElementAccessOf(node->op()); |
| ProcessInput(node, 0, changer_->TypeForBasePointer(access)); |
| ProcessInput(node, 1, kMachInt32); // element index |
| + ProcessEffect(node); |
| SetOutput(node, access.machine_type); |
| if (lower()) lowering->DoLoadElement(node); |
| break; |
| @@ -554,6 +562,7 @@ class RepresentationSelector { |
| ProcessInput(node, 0, changer_->TypeForBasePointer(access)); |
| ProcessInput(node, 1, kMachInt32); // element index |
| ProcessInput(node, 2, access.machine_type); |
| + ProcessEffect(node); |
| SetOutput(node, 0); |
| if (lower()) lowering->DoStoreElement(node); |
| break; |
| @@ -568,6 +577,7 @@ class RepresentationSelector { |
| MachineType machine_type = OpParameter<MachineType>(node); |
| ProcessInput(node, 0, tBase); // pointer or object |
| ProcessInput(node, 1, kMachInt32); // index |
| + ProcessEffect(node); |
| SetOutput(node, machine_type); |
| break; |
| } |
| @@ -578,6 +588,7 @@ class RepresentationSelector { |
| ProcessInput(node, 0, tBase); // pointer or object |
| ProcessInput(node, 1, kMachInt32); // index |
| ProcessInput(node, 2, rep.machine_type); |
| + ProcessEffect(node); |
| SetOutput(node, 0); |
| break; |
| } |