| Index: src/mips64/lithium-mips64.cc
|
| diff --git a/src/mips64/lithium-mips64.cc b/src/mips64/lithium-mips64.cc
|
| index c243671106a5f7e1a923d9c2b49b6ea986f5b5a4..3df4defc7af739a65a1a08650817fb20a4a6b049 100644
|
| --- a/src/mips64/lithium-mips64.cc
|
| +++ b/src/mips64/lithium-mips64.cc
|
| @@ -1097,11 +1097,19 @@ LInstruction* LChunkBuilder::DoCallWithDescriptor(
|
|
|
| LOperand* target = UseRegisterOrConstantAtStart(instr->target());
|
| ZoneList<LOperand*> ops(instr->OperandCount(), zone());
|
| + // Target
|
| ops.Add(target, zone());
|
| - for (int i = 1; i < instr->OperandCount(); i++) {
|
| - LOperand* op =
|
| - UseFixed(instr->OperandAt(i), descriptor.GetParameterRegister(i - 1));
|
| - ops.Add(op, zone());
|
| + // Context
|
| + LOperand* op = UseFixed(instr->OperandAt(1), cp);
|
| + ops.Add(op, zone());
|
| + // Other register parameters
|
| + for (int i = LCallWithDescriptor::kImplicitRegisterParameterCount;
|
| + i < instr->OperandCount(); i++) {
|
| + op =
|
| + UseFixed(instr->OperandAt(i),
|
| + descriptor.GetRegisterParameter(
|
| + i - LCallWithDescriptor::kImplicitRegisterParameterCount));
|
| + ops.Add(op, zone());
|
| }
|
|
|
| LCallWithDescriptor* result = new(zone()) LCallWithDescriptor(
|
| @@ -2453,7 +2461,7 @@ LInstruction* LChunkBuilder::DoParameter(HParameter* instr) {
|
| CallInterfaceDescriptor descriptor =
|
| info()->code_stub()->GetCallInterfaceDescriptor();
|
| int index = static_cast<int>(instr->index());
|
| - Register reg = descriptor.GetEnvironmentParameterRegister(index);
|
| + Register reg = descriptor.GetRegisterParameter(index);
|
| return DefineFixed(result, reg);
|
| }
|
| }
|
|
|