Index: src/compiler/instruction-selector.cc |
diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc |
index b6e011835640672058a5454c11551253b800aeba..7e7253121630dadcbe19c090d348bfe7cd2305bf 100644 |
--- a/src/compiler/instruction-selector.cc |
+++ b/src/compiler/instruction-selector.cc |
@@ -933,6 +933,16 @@ void InstructionSelector::VisitControl(BasicBlock* block) { |
} |
} |
+void InstructionSelector::MarkPairProjectionsAsWord32(Node* node) { |
+ Node* projection0 = NodeProperties::FindProjection(node, 0); |
+ if (projection0) { |
+ MarkAsWord32(projection0); |
titzer
2016/10/19 09:20:42
If projection0 is not found, do you need to mark {
ahaas
2016/10/19 09:59:19
I mark {node} now always as word32.
|
+ } |
+ Node* projection1 = NodeProperties::FindProjection(node, 1); |
+ if (projection1) { |
+ MarkAsWord32(projection1); |
+ } |
+} |
void InstructionSelector::VisitNode(Node* node) { |
DCHECK_NOT_NULL(schedule()->block(node)); // should only use scheduled nodes. |
@@ -1340,28 +1350,22 @@ void InstructionSelector::VisitNode(Node* node) { |
case IrOpcode::kCheckedStore: |
return VisitCheckedStore(node); |
case IrOpcode::kInt32PairAdd: |
- MarkAsWord32(NodeProperties::FindProjection(node, 0)); |
- MarkAsWord32(NodeProperties::FindProjection(node, 1)); |
+ MarkPairProjectionsAsWord32(node); |
return VisitInt32PairAdd(node); |
case IrOpcode::kInt32PairSub: |
- MarkAsWord32(NodeProperties::FindProjection(node, 0)); |
- MarkAsWord32(NodeProperties::FindProjection(node, 1)); |
+ MarkPairProjectionsAsWord32(node); |
return VisitInt32PairSub(node); |
case IrOpcode::kInt32PairMul: |
- MarkAsWord32(NodeProperties::FindProjection(node, 0)); |
- MarkAsWord32(NodeProperties::FindProjection(node, 1)); |
+ MarkPairProjectionsAsWord32(node); |
return VisitInt32PairMul(node); |
case IrOpcode::kWord32PairShl: |
- MarkAsWord32(NodeProperties::FindProjection(node, 0)); |
- MarkAsWord32(NodeProperties::FindProjection(node, 1)); |
+ MarkPairProjectionsAsWord32(node); |
return VisitWord32PairShl(node); |
case IrOpcode::kWord32PairShr: |
- MarkAsWord32(NodeProperties::FindProjection(node, 0)); |
- MarkAsWord32(NodeProperties::FindProjection(node, 1)); |
+ MarkPairProjectionsAsWord32(node); |
return VisitWord32PairShr(node); |
case IrOpcode::kWord32PairSar: |
- MarkAsWord32(NodeProperties::FindProjection(node, 0)); |
- MarkAsWord32(NodeProperties::FindProjection(node, 1)); |
+ MarkPairProjectionsAsWord32(node); |
return VisitWord32PairSar(node); |
case IrOpcode::kAtomicLoad: { |
LoadRepresentation type = LoadRepresentationOf(node->op()); |