| Index: src/arm/builtins-arm.cc
 | 
| diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc
 | 
| index 756634d38d6e399dce0a69052190403e0ad1fa37..41bfc88307d2ff052c73c8603965fcfb796bee4a 100644
 | 
| --- a/src/arm/builtins-arm.cc
 | 
| +++ b/src/arm/builtins-arm.cc
 | 
| @@ -896,23 +896,15 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
 | 
|      // r4: JSObject
 | 
|      __ bind(&allocated);
 | 
|      __ push(r4);
 | 
| +    __ push(r4);
 | 
|  
 | 
| -    // Push the function and the allocated receiver from the stack.
 | 
| -    // sp[0]: receiver (newly allocated object)
 | 
| -    // sp[1]: constructor function
 | 
| -    // sp[2]: number of arguments (smi-tagged)
 | 
| -    __ ldr(r1, MemOperand(sp, kPointerSize));
 | 
| -    __ push(r1);  // Constructor function.
 | 
| -    __ push(r4);  // Receiver.
 | 
| -
 | 
| -    // Reload the number of arguments from the stack.
 | 
| -    // r1: constructor function
 | 
| +    // Reload the number of arguments and the constructor from the stack.
 | 
|      // sp[0]: receiver
 | 
| -    // sp[1]: constructor function
 | 
| -    // sp[2]: receiver
 | 
| -    // sp[3]: constructor function
 | 
| -    // sp[4]: number of arguments (smi-tagged)
 | 
| -    __ ldr(r3, MemOperand(sp, 4 * kPointerSize));
 | 
| +    // sp[1]: receiver
 | 
| +    // sp[2]: constructor function
 | 
| +    // sp[3]: number of arguments (smi-tagged)
 | 
| +    __ ldr(r1, MemOperand(sp, 2 * kPointerSize));
 | 
| +    __ ldr(r3, MemOperand(sp, 3 * kPointerSize));
 | 
|  
 | 
|      // Set up pointer to last argument.
 | 
|      __ add(r2, fp, Operand(StandardFrameConstants::kCallerSPOffset));
 | 
| @@ -922,14 +914,13 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
 | 
|  
 | 
|      // Copy arguments and receiver to the expression stack.
 | 
|      // r0: number of arguments
 | 
| -    // r2: address of last argument (caller sp)
 | 
|      // r1: constructor function
 | 
| +    // r2: address of last argument (caller sp)
 | 
|      // r3: number of arguments (smi-tagged)
 | 
|      // sp[0]: receiver
 | 
| -    // sp[1]: constructor function
 | 
| -    // sp[2]: receiver
 | 
| -    // sp[3]: constructor function
 | 
| -    // sp[4]: number of arguments (smi-tagged)
 | 
| +    // sp[1]: receiver
 | 
| +    // sp[2]: constructor function
 | 
| +    // sp[3]: number of arguments (smi-tagged)
 | 
|      Label loop, entry;
 | 
|      __ b(&entry);
 | 
|      __ bind(&loop);
 | 
| @@ -955,12 +946,10 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
 | 
|                          NullCallWrapper(), CALL_AS_METHOD);
 | 
|      }
 | 
|  
 | 
| -    // Pop the function from the stack.
 | 
| -    // sp[0]: constructor function
 | 
| -    // sp[2]: receiver
 | 
| -    // sp[3]: constructor function
 | 
| -    // sp[4]: number of arguments (smi-tagged)
 | 
| -    __ pop();
 | 
| +    // Store offset of return address for deoptimizer.
 | 
| +    if (!is_api_function && !count_constructions) {
 | 
| +      masm->isolate()->heap()->SetConstructStubDeoptPCOffset(masm->pc_offset());
 | 
| +    }
 | 
|  
 | 
|      // Restore context from the frame.
 | 
|      // r0: result
 | 
| @@ -1724,7 +1713,9 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
 | 
|    __ bind(&invoke);
 | 
|    __ Call(r3);
 | 
|  
 | 
| +  // Store offset of return address for deoptimizer.
 | 
|    masm->isolate()->heap()->SetArgumentsAdaptorDeoptPCOffset(masm->pc_offset());
 | 
| +
 | 
|    // Exit frame and return.
 | 
|    LeaveArgumentsAdaptorFrame(masm);
 | 
|    __ Jump(lr);
 | 
| 
 |