| Index: src/arm/ic-arm.cc
|
| diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc
|
| index 6c7aa0643ace46483f80a1032373044605b4db06..0fc6818703375b649d8d31cd543058c0eed237f3 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,8 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
|
| +void StoreIC::GenerateGlobalProxy(MacroAssembler* masm,
|
| + StrictModeFlag strict_mode) {
|
| // ----------- S t a t e -------------
|
| // -- r0 : value
|
| // -- r1 : receiver
|
| @@ -1656,8 +1663,12 @@ void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
|
|
|
| __ Push(r1, r2, r0);
|
|
|
| + __ mov(r1, Operand(Smi::FromInt(NONE))); // PropertyAttributes
|
| + __ mov(r0, Operand(Smi::FromInt(strict_mode)));
|
| + __ Push(r1, r0);
|
| +
|
| // Do tail-call to runtime routine.
|
| - __ TailCallRuntime(Runtime::kSetProperty, 3, 1);
|
| + __ TailCallRuntime(Runtime::kSetProperty, 5, 1);
|
| }
|
|
|
|
|
|
|