Index: src/compiler/instruction-selector.cc |
diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc |
index eac5571e9c4b8ae1424aab36d9690efb941a5db0..39db29890b19c9643d429182447557e3f84c2070 100644 |
--- a/src/compiler/instruction-selector.cc |
+++ b/src/compiler/instruction-selector.cc |
@@ -1082,9 +1082,19 @@ void InstructionSelector::VisitGuard(Node* node) { |
void InstructionSelector::VisitParameter(Node* node) { |
OperandGenerator g(this); |
int index = ParameterIndexOf(node->op()); |
- Emit(kArchNop, |
- g.DefineAsLocation(node, linkage()->GetParameterLocation(index), |
- linkage()->GetParameterType(index))); |
+ InstructionOperand op = |
+ g.DefineAsLocation(node, linkage()->GetParameterLocation(index), |
+ linkage()->GetParameterType(index)); |
+ |
+ if (linkage()->ParameterHasSecondaryLocation(index)) { |
+ InstructionOperand prespilled = g.DefineAsLocation( |
Jarin
2015/11/12 12:08:33
I am mildly surprised that it is possible to defin
Mircea Trofin
2015/11/12 18:01:35
Will do - if we keep this design.
|
+ node, linkage()->GetParameterSecondaryLocation(index), |
+ linkage()->GetParameterType(index)); |
+ InstructionOperand outputs[2] = {op, prespilled}; |
+ Emit(kArchNop, 2, outputs, 0, nullptr); |
+ } else { |
+ Emit(kArchNop, op); |
+ } |
} |