| Index: src/arm/code-stubs-arm.cc | 
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc | 
| index 06c1b05815010bc9e72f6130c0c258f27f393ed8..526bc5525a433a685f8e1c0f78db2a46adccf2e2 100644 | 
| --- a/src/arm/code-stubs-arm.cc | 
| +++ b/src/arm/code-stubs-arm.cc | 
| @@ -2019,12 +2019,12 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { | 
| __ Allocate(r9, r0, r3, r4, &runtime, TAG_OBJECT); | 
|  | 
| // r0 = address of new object(s) (tagged) | 
| -  // r2 = argument count (tagged) | 
| +  // r2 = argument count (smi-tagged) | 
| // Get the arguments boilerplate from the current native context into r4. | 
| const int kNormalOffset = | 
| -      Context::SlotOffset(Context::SLOPPY_ARGUMENTS_BOILERPLATE_INDEX); | 
| +      Context::SlotOffset(Context::SLOPPY_ARGUMENTS_MAP_INDEX); | 
| const int kAliasedOffset = | 
| -      Context::SlotOffset(Context::ALIASED_ARGUMENTS_BOILERPLATE_INDEX); | 
| +      Context::SlotOffset(Context::ALIASED_ARGUMENTS_MAP_INDEX); | 
|  | 
| __ ldr(r4, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); | 
| __ ldr(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset)); | 
| @@ -2034,22 +2034,23 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { | 
|  | 
| // r0 = address of new object (tagged) | 
| // r1 = mapped parameter count (tagged) | 
| -  // r2 = argument count (tagged) | 
| -  // r4 = address of boilerplate object (tagged) | 
| -  // Copy the JS object part. | 
| -  for (int i = 0; i < JSObject::kHeaderSize; i += kPointerSize) { | 
| -    __ ldr(r3, FieldMemOperand(r4, i)); | 
| -    __ str(r3, FieldMemOperand(r0, i)); | 
| -  } | 
| +  // r2 = argument count (smi-tagged) | 
| +  // r4 = address of arguments map (tagged) | 
| +  __ str(r4, FieldMemOperand(r0, JSObject::kMapOffset)); | 
| +  __ LoadRoot(r3, Heap::kEmptyFixedArrayRootIndex); | 
| +  __ str(r3, FieldMemOperand(r0, JSObject::kPropertiesOffset)); | 
| +  __ str(r3, FieldMemOperand(r0, JSObject::kElementsOffset)); | 
|  | 
| // Set up the callee in-object property. | 
| STATIC_ASSERT(Heap::kArgumentsCalleeIndex == 1); | 
| __ ldr(r3, MemOperand(sp, 2 * kPointerSize)); | 
| +  __ AssertNotSmi(r3); | 
| const int kCalleeOffset = JSObject::kHeaderSize + | 
| Heap::kArgumentsCalleeIndex * kPointerSize; | 
| __ str(r3, FieldMemOperand(r0, kCalleeOffset)); | 
|  | 
| // Use the length (smi tagged) and set that as an in-object property too. | 
| +  __ AssertSmi(r2); | 
| STATIC_ASSERT(Heap::kArgumentsLengthIndex == 0); | 
| const int kLengthOffset = JSObject::kHeaderSize + | 
| Heap::kArgumentsLengthIndex * kPointerSize; | 
| @@ -2203,15 +2204,18 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { | 
| // Get the arguments boilerplate from the current native context. | 
| __ ldr(r4, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); | 
| __ ldr(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset)); | 
| -  __ ldr(r4, MemOperand(r4, Context::SlotOffset( | 
| -      Context::STRICT_ARGUMENTS_BOILERPLATE_INDEX))); | 
| +  __ ldr(r4, MemOperand( | 
| +                 r4, Context::SlotOffset(Context::STRICT_ARGUMENTS_MAP_INDEX))); | 
|  | 
| -  // Copy the JS object part. | 
| -  __ CopyFields(r0, r4, d0, JSObject::kHeaderSize / kPointerSize); | 
| +  __ str(r4, FieldMemOperand(r0, JSObject::kMapOffset)); | 
| +  __ LoadRoot(r3, Heap::kEmptyFixedArrayRootIndex); | 
| +  __ str(r3, FieldMemOperand(r0, JSObject::kPropertiesOffset)); | 
| +  __ str(r3, FieldMemOperand(r0, JSObject::kElementsOffset)); | 
|  | 
| // Get the length (smi tagged) and set that as an in-object property too. | 
| STATIC_ASSERT(Heap::kArgumentsLengthIndex == 0); | 
| __ ldr(r1, MemOperand(sp, 0 * kPointerSize)); | 
| +  __ AssertSmi(r1); | 
| __ str(r1, FieldMemOperand(r0, JSObject::kHeaderSize + | 
| Heap::kArgumentsLengthIndex * kPointerSize)); | 
|  | 
|  |