| Index: src/x64/ic-x64.cc
|
| diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc
|
| index 55d837c6b6363deee884d550b2342a3e0e5738f5..b3243cf48a9c41b0fc7da6d83d690f1cc1a3e8a1 100644
|
| --- a/src/x64/ic-x64.cc
|
| +++ b/src/x64/ic-x64.cc
|
| @@ -766,7 +766,8 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
|
| +void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
|
| + StrictModeFlag strict_mode) {
|
| // ----------- S t a t e -------------
|
| // -- rax : value
|
| // -- rcx : key
|
| @@ -813,7 +814,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
|
| __ bind(&slow);
|
| __ Integer32ToSmi(rcx, rcx);
|
| __ bind(&slow_with_tagged_index);
|
| - GenerateRuntimeSetProperty(masm);
|
| + GenerateRuntimeSetProperty(masm, strict_mode);
|
| // Never returns to here.
|
|
|
| // Check whether the elements is a pixel array.
|
| @@ -1474,7 +1475,7 @@ void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
|
|
|
|
|
| void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
|
| - Code::ExtraICState extra_ic_state) {
|
| + StrictModeFlag strict_mode) {
|
| // ----------- S t a t e -------------
|
| // -- rax : value
|
| // -- rcx : name
|
| @@ -1486,7 +1487,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, rdx, rcx, rbx, no_reg);
|
|
|
| // Cache miss: Jump to runtime.
|
| @@ -1593,7 +1594,8 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
|
| +void StoreIC::GenerateGlobalProxy(MacroAssembler* masm,
|
| + StrictModeFlag strict_mode) {
|
| // ----------- S t a t e -------------
|
| // -- rax : value
|
| // -- rcx : name
|
| @@ -1604,14 +1606,17 @@ void StoreIC::GenerateGlobalProxy(MacroAssembler* masm) {
|
| __ push(rdx);
|
| __ push(rcx);
|
| __ push(rax);
|
| - __ push(rbx);
|
| + __ Push(Smi::FromInt(NONE)); // PropertyAttributes
|
| + __ Push(Smi::FromInt(strict_mode));
|
| + __ push(rbx); // 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 -------------
|
| // -- rax : value
|
| // -- rcx : key
|
| @@ -1623,10 +1628,12 @@ void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm) {
|
| __ push(rdx); // receiver
|
| __ push(rcx); // key
|
| __ push(rax); // value
|
| + __ Push(Smi::FromInt(NONE)); // PropertyAttributes
|
| + __ Push(Smi::FromInt(strict_mode)); // Strict mode.
|
| __ push(rbx); // return address
|
|
|
| // Do tail-call to runtime routine.
|
| - __ TailCallRuntime(Runtime::kSetProperty, 3, 1);
|
| + __ TailCallRuntime(Runtime::kSetProperty, 5, 1);
|
| }
|
|
|
|
|
|
|