Index: src/arm/virtual-frame-arm.cc |
diff --git a/src/arm/virtual-frame-arm.cc b/src/arm/virtual-frame-arm.cc |
index 3266a16e3a8483970ff1066f9caf4262835a8cfe..b4b518cff6eced69c192f7efe0b47c7f5192175a 100644 |
--- a/src/arm/virtual-frame-arm.cc |
+++ b/src/arm/virtual-frame-arm.cc |
@@ -329,18 +329,25 @@ void VirtualFrame::CallLoadIC(Handle<String> name, RelocInfo::Mode mode) { |
} |
-void VirtualFrame::CallStoreIC(Handle<String> name, bool is_contextual) { |
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize)); |
+void VirtualFrame::CallStoreIC(Handle<String> name, |
+ bool is_contextual, |
+ StrictModeFlag strict_mode) { |
+ Handle<Code> ic(Builtins::builtin(strict_mode == kStrictMode |
+ ? Builtins::StoreIC_Initialize_Strict |
+ : Builtins::StoreIC_Initialize)); |
PopToR0(); |
+ RelocInfo::Mode mode; |
if (is_contextual) { |
SpillAll(); |
__ ldr(r1, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_INDEX))); |
+ mode = RelocInfo::CODE_TARGET_CONTEXT; |
} else { |
EmitPop(r1); |
SpillAll(); |
+ mode = RelocInfo::CODE_TARGET; |
} |
__ mov(r2, Operand(name)); |
- CallCodeObject(ic, RelocInfo::CODE_TARGET, 0); |
+ CallCodeObject(ic, mode, 0); |
} |