| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index d096087b4283f16bf93adba20324692376ca549c..627aad79de5159082866a1757c584b74bd9fd83a 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -2956,23 +2956,25 @@ void LCodeGen::DoReturn(LReturn* instr) {
|
| if (NeedsEagerFrame()) {
|
| no_frame_start = masm_->LeaveFrame(StackFrame::JAVA_SCRIPT);
|
| }
|
| - if (instr->has_constant_parameter_count()) {
|
| - int parameter_count = ToInteger32(instr->constant_parameter_count());
|
| - int32_t sp_delta = (parameter_count + 1) * kPointerSize;
|
| - if (sp_delta != 0) {
|
| - __ add(sp, sp, Operand(sp_delta));
|
| + { ConstantPoolUnavailableScope constant_pool_unavailable(masm());
|
| + if (instr->has_constant_parameter_count()) {
|
| + int parameter_count = ToInteger32(instr->constant_parameter_count());
|
| + int32_t sp_delta = (parameter_count + 1) * kPointerSize;
|
| + if (sp_delta != 0) {
|
| + __ add(sp, sp, Operand(sp_delta));
|
| + }
|
| + } else {
|
| + Register reg = ToRegister(instr->parameter_count());
|
| + // The argument count parameter is a smi
|
| + __ SmiUntag(reg);
|
| + __ add(sp, sp, Operand(reg, LSL, kPointerSizeLog2));
|
| }
|
| - } else {
|
| - Register reg = ToRegister(instr->parameter_count());
|
| - // The argument count parameter is a smi
|
| - __ SmiUntag(reg);
|
| - __ add(sp, sp, Operand(reg, LSL, kPointerSizeLog2));
|
| - }
|
|
|
| - __ Jump(lr);
|
| + __ Jump(lr);
|
|
|
| - if (no_frame_start != -1) {
|
| - info_->AddNoFrameRange(no_frame_start, masm_->pc_offset());
|
| + if (no_frame_start != -1) {
|
| + info_->AddNoFrameRange(no_frame_start, masm_->pc_offset());
|
| + }
|
| }
|
| }
|
|
|
|
|