| Index: src/arm/codegen-arm.cc | 
| diff --git a/src/arm/codegen-arm.cc b/src/arm/codegen-arm.cc | 
| index 0ca4d3560e02a91742da0777addc032b201a33e9..4e0801a1b72f748b664395b50d4cc55d24079923 100644 | 
| --- a/src/arm/codegen-arm.cc | 
| +++ b/src/arm/codegen-arm.cc | 
| @@ -3587,13 +3587,22 @@ void CodeGenerator::GenerateArgumentsLength(ZoneList<Expression*>* args) { | 
| VirtualFrame::SpilledScope spilled_scope; | 
| ASSERT(args->length() == 0); | 
|  | 
| -  // Seed the result with the formal parameters count, which will be used | 
| -  // in case no arguments adaptor frame is found below the current frame. | 
| +  Label exit; | 
| + | 
| +  // Get the number of formal parameters. | 
| __ mov(r0, Operand(Smi::FromInt(scope()->num_parameters()))); | 
|  | 
| -  // Call the shared stub to get to the arguments.length. | 
| -  ArgumentsAccessStub stub(ArgumentsAccessStub::READ_LENGTH); | 
| -  frame_->CallStub(&stub, 0); | 
| +  // Check if the calling frame is an arguments adaptor frame. | 
| +  __ ldr(r2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); | 
| +  __ ldr(r3, MemOperand(r2, StandardFrameConstants::kContextOffset)); | 
| +  __ cmp(r3, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); | 
| +  __ b(ne, &exit); | 
| + | 
| +  // Arguments adaptor case: Read the arguments length from the | 
| +  // adaptor frame. | 
| +  __ ldr(r0, MemOperand(r2, ArgumentsAdaptorFrameConstants::kLengthOffset)); | 
| + | 
| +  __ bind(&exit); | 
| frame_->EmitPush(r0); | 
| } | 
|  | 
| @@ -6791,26 +6800,6 @@ void InstanceofStub::Generate(MacroAssembler* masm) { | 
| } | 
|  | 
|  | 
| -void ArgumentsAccessStub::GenerateReadLength(MacroAssembler* masm) { | 
| -  // Check if the calling frame is an arguments adaptor frame. | 
| -  Label adaptor; | 
| -  __ ldr(r2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); | 
| -  __ ldr(r3, MemOperand(r2, StandardFrameConstants::kContextOffset)); | 
| -  __ cmp(r3, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); | 
| -  __ b(eq, &adaptor); | 
| - | 
| -  // Nothing to do: The formal number of parameters has already been | 
| -  // passed in register r0 by calling function. Just return it. | 
| -  __ Jump(lr); | 
| - | 
| -  // Arguments adaptor case: Read the arguments length from the | 
| -  // adaptor frame and return it. | 
| -  __ bind(&adaptor); | 
| -  __ ldr(r0, MemOperand(r2, ArgumentsAdaptorFrameConstants::kLengthOffset)); | 
| -  __ Jump(lr); | 
| -} | 
| - | 
| - | 
| void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) { | 
| // The displacement is the offset of the last parameter (if any) | 
| // relative to the frame pointer. | 
|  |