| Index: src/arm/ic-arm.cc
 | 
| diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc
 | 
| index 6c7aa0643ace46483f80a1032373044605b4db06..8a898ed3d6a148c181278986c3e5c6895d4e661b 100644
 | 
| --- a/src/arm/ic-arm.cc
 | 
| +++ b/src/arm/ic-arm.cc
 | 
| @@ -1400,7 +1400,8 @@ void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm) {
 | 
| +void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
 | 
| +                                              StrictModeFlag strict_mode) {
 | 
|    // ---------- S t a t e --------------
 | 
|    //  -- r0     : value
 | 
|    //  -- r1     : key
 | 
| @@ -1411,11 +1412,16 @@ void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm) {
 | 
|    // Push receiver, key and value for runtime call.
 | 
|    __ Push(r2, r1, r0);
 | 
|  
 | 
| -  __ TailCallRuntime(Runtime::kSetProperty, 3, 1);
 | 
| +  __ mov(r1, Operand(Smi::FromInt(NONE)));          // PropertyAttributes
 | 
| +  __ mov(r0, Operand(Smi::FromInt(strict_mode)));   // Strict mode.
 | 
| +  __ Push(r1, r0);
 | 
| +
 | 
| +  __ TailCallRuntime(Runtime::kSetProperty, 5, 1);
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
 | 
| +void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
 | 
| +                                   StrictModeFlag strict_mode) {
 | 
|    // ---------- S t a t e --------------
 | 
|    //  -- r0     : value
 | 
|    //  -- r1     : key
 | 
| @@ -1470,7 +1476,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
 | 
|    // r0: value.
 | 
|    // r1: key.
 | 
|    // r2: receiver.
 | 
| -  GenerateRuntimeSetProperty(masm);
 | 
| +  GenerateRuntimeSetProperty(masm, strict_mode);
 | 
|  
 | 
|    // Check whether the elements is a pixel array.
 | 
|    // r4: elements map.
 | 
| @@ -1540,7 +1546,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
 | 
|  
 | 
|  
 | 
|  void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
 | 
| -                                  Code::ExtraICState extra_ic_state) {
 | 
| +                                  StrictModeFlag strict_mode) {
 | 
|    // ----------- S t a t e -------------
 | 
|    //  -- r0    : value
 | 
|    //  -- r1    : receiver
 | 
| @@ -1552,7 +1558,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
 | 
|    Code::Flags flags = Code::ComputeFlags(Code::STORE_IC,
 | 
|                                           NOT_IN_LOOP,
 | 
|                                           MONOMORPHIC,
 | 
| -                                         extra_ic_state);
 | 
| +                                         strict_mode);
 | 
|    StubCache::GenerateProbe(masm, flags, r1, r2, r3, r4, r5);
 | 
|  
 | 
|    // Cache miss: Jump to runtime.
 | 
| @@ -1646,7 +1652,7 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
 | 
| +void StoreIC::GenerateGlobalProxy(MacroAssembler* masm, StrictModeFlag strict) {
 | 
|    // ----------- S t a t e -------------
 | 
|    //  -- r0    : value
 | 
|    //  -- r1    : receiver
 | 
| @@ -1656,8 +1662,12 @@ void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
 | 
|  
 | 
|    __ Push(r1, r2, r0);
 | 
|  
 | 
| +  __ mov(r1, Operand(Smi::FromInt(NONE)));  // PropertyAttributes
 | 
| +  __ mov(r0, Operand(Smi::FromInt(strict)));
 | 
| +  __ Push(r1, r0);
 | 
| +
 | 
|    // Do tail-call to runtime routine.
 | 
| -  __ TailCallRuntime(Runtime::kSetProperty, 3, 1);
 | 
| +  __ TailCallRuntime(Runtime::kSetProperty, 5, 1);
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |