| Index: src/ia32/ic-ia32.cc
|
| diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
|
| index 73cd60df56f4b5d41cfb15452cc2f5b2c5b38c02..4e808d53501a5ec9085e4ae63378fbb2060bdaef 100644
|
| --- a/src/ia32/ic-ia32.cc
|
| +++ b/src/ia32/ic-ia32.cc
|
| @@ -761,7 +761,8 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
|
| +void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
|
| + StrictModeFlag strict_mode) {
|
| // ----------- S t a t e -------------
|
| // -- eax : value
|
| // -- ecx : key
|
| @@ -801,7 +802,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
|
|
|
| // Slow case: call runtime.
|
| __ bind(&slow);
|
| - GenerateRuntimeSetProperty(masm);
|
| + GenerateRuntimeSetProperty(masm, strict_mode);
|
|
|
| // Check whether the elements is a pixel array.
|
| __ bind(&check_pixel_array);
|
| @@ -1617,7 +1618,7 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
|
| +void StoreIC::GenerateGlobalProxy(MacroAssembler* masm, StrictModeFlag strict) {
|
| // ----------- S t a t e -------------
|
| // -- eax : value
|
| // -- ecx : name
|
| @@ -1628,14 +1629,17 @@ void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
|
| __ push(edx);
|
| __ push(ecx);
|
| __ push(eax);
|
| - __ push(ebx);
|
| + __ push(Immediate(Smi::FromInt(NONE))); // PropertyAttributes
|
| + __ push(Immediate(Smi::FromInt(strict)));
|
| + __ push(ebx); // return address
|
|
|
| // Do tail-call to runtime routine.
|
| - __ TailCallRuntime(Runtime::kSetProperty, 3, 1);
|
| + __ TailCallRuntime(Runtime::kSetProperty, 5, 1);
|
| }
|
|
|
|
|
| -void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm) {
|
| +void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
|
| + StrictModeFlag strict_mode) {
|
| // ----------- S t a t e -------------
|
| // -- eax : value
|
| // -- ecx : key
|
| @@ -1647,10 +1651,12 @@ void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm) {
|
| __ push(edx);
|
| __ push(ecx);
|
| __ push(eax);
|
| - __ push(ebx);
|
| + __ push(Immediate(Smi::FromInt(NONE))); // PropertyAttributes
|
| + __ push(Immediate(Smi::FromInt(strict_mode))); // Strict mode.
|
| + __ push(ebx); // return address
|
|
|
| // Do tail-call to runtime routine.
|
| - __ TailCallRuntime(Runtime::kSetProperty, 3, 1);
|
| + __ TailCallRuntime(Runtime::kSetProperty, 5, 1);
|
| }
|
|
|
|
|
|
|