| Index: src/compiler/arm/code-generator-arm.cc
 | 
| diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc
 | 
| index e969f02e1f5dfeb727118057fcdbb4162b1e7e22..17fe8cdb0fad4b7affa3976fe6e9ece6dfd327f7 100644
 | 
| --- a/src/compiler/arm/code-generator-arm.cc
 | 
| +++ b/src/compiler/arm/code-generator-arm.cc
 | 
| @@ -759,7 +759,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
 | 
|        break;
 | 
|      }
 | 
|      case kArchRet:
 | 
| -      AssembleReturn();
 | 
| +      AssembleReturn(instr->InputAt(0));
 | 
|        DCHECK_EQ(LeaveCC, i.OutputSBit());
 | 
|        break;
 | 
|      case kArchStackPointer:
 | 
| @@ -1752,8 +1752,7 @@ void CodeGenerator::AssembleConstructFrame() {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
| -void CodeGenerator::AssembleReturn() {
 | 
| +void CodeGenerator::AssembleReturn(InstructionOperand* pop) {
 | 
|    CallDescriptor* descriptor = linkage()->GetIncomingDescriptor();
 | 
|    int pop_count = static_cast<int>(descriptor->StackParameterCount());
 | 
|  
 | 
| @@ -1789,7 +1788,16 @@ void CodeGenerator::AssembleReturn() {
 | 
|        AssembleDeconstructFrame();
 | 
|      }
 | 
|    }
 | 
| -  __ Ret(pop_count);
 | 
| +
 | 
| +  ArmOperandConverter g(this, nullptr);
 | 
| +  if (pop->IsImmediate()) {
 | 
| +    DCHECK_EQ(Constant::kInt32, g.ToConstant(pop).type());
 | 
| +    pop_count += g.ToConstant(pop).ToInt32();
 | 
| +  } else {
 | 
| +    __ Drop(g.ToRegister(pop));
 | 
| +  }
 | 
| +  __ Drop(pop_count);
 | 
| +  __ Ret();
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |