| Index: src/arm/virtual-frame-arm.cc
|
| ===================================================================
|
| --- src/arm/virtual-frame-arm.cc (revision 6800)
|
| +++ src/arm/virtual-frame-arm.cc (working copy)
|
| @@ -68,6 +68,8 @@
|
|
|
| void VirtualFrame::MergeTo(const VirtualFrame* expected, Condition cond) {
|
| if (Equals(expected)) return;
|
| + ASSERT((expected->tos_known_smi_map_ & tos_known_smi_map_) ==
|
| + expected->tos_known_smi_map_);
|
| ASSERT(expected->IsCompatibleWith(this));
|
| MergeTOSTo(expected->top_of_stack_state_, cond);
|
| ASSERT(register_allocation_map_ == expected->register_allocation_map_);
|
| @@ -76,7 +78,7 @@
|
|
|
| void VirtualFrame::MergeTo(VirtualFrame* expected, Condition cond) {
|
| if (Equals(expected)) return;
|
| - expected->tos_known_smi_map_ &= tos_known_smi_map_;
|
| + tos_known_smi_map_ &= expected->tos_known_smi_map_;
|
| MergeTOSTo(expected->top_of_stack_state_, cond);
|
| ASSERT(register_allocation_map_ == expected->register_allocation_map_);
|
| }
|
| @@ -327,18 +329,25 @@
|
| }
|
|
|
|
|
| -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);
|
| }
|
|
|
|
|
|
|