Comment cmnt(masm, "[ Store to Slot");
Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot();
cgen_->StoreToSlot(slot, init_state);
+ cgen_->UnloadReference(this);
break;
}
&property_name,
0);
frame->EmitPush(r0);
+ cgen_->UnloadReference(this);
break;
}
frame->EmitPop(r0); // value
frame->CallCodeObject(ic, RelocInfo::CODE_TARGET, &value, 0);
frame->EmitPush(r0);
+ cgen_->UnloadReference(this);
break;
}
default:
UNREACHABLE();
}
- cgen_->UnloadReference(this);
}
// -- lr : return address
// -- [sp] : receiver
// -----------------------------------
-
Label miss;
__ ldr(r0, MemOperand(sp, 0));
// -- lr : return address
// -- [sp] : receiver
// -----------------------------------
-
Label miss;
// Load receiver.
// ----------- S t a t e -------------
// -- lr: return address
// -----------------------------------
-
Label miss, global_object, non_global_object;
// Get the receiver of the function from the stack into r1.
// -- lr : return address
// -- [sp] : receiver
// -----------------------------------
-
Label miss, probe, global;
__ ldr(r0, MemOperand(sp, 0));
// -- lr : return address
// -- sp[0] : key
// -- sp[4] : receiver
+ // -----------------------------------
+
__ ldm(ia, sp, r2.bit() | r3.bit());
__ stm(db_w, sp, r2.bit() | r3.bit());
// -- lr : return address
// -- sp[0] : key
// -- sp[4] : receiver
+ // -----------------------------------
Label slow, fast;
// Get the key and receiver object from the stack.
// -- lr : return address
// -- sp[0] : key
// -- sp[4] : receiver
+ // -----------------------------------
+
GenerateGeneric(masm);
}
// -- lr : return address
// -- sp[0] : key
// -- sp[1] : receiver
+ // -----------------------------------
__ ldm(ia, sp, r2.bit() | r3.bit());
__ stm(db_w, sp, r0.bit() | r2.bit() | r3.bit());
// -- lr : return address
// -- sp[0] : key
// -- sp[1] : receiver
+ // -----------------------------------
Label slow, fast, array, extra, exit;
+
// Get the key and the object from the stack.
__ ldm(ia, sp, r1.bit() | r3.bit()); // r1 = key, r3 = receiver
// Check that the key is a smi.
Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot();
ASSERT(slot != NULL);
cgen_->StoreToSlot(slot, init_state);
+ cgen_->UnloadReference(this);
break;
}
cgen_->frame()->Push(GetName());
Result answer = cgen_->frame()->CallStoreIC();
cgen_->frame()->Push(&answer);
+ cgen_->UnloadReference(this);
break;
}
__ nop();
cgen_->frame()->Push(&answer);
}
+ cgen_->UnloadReference(this);
break;
}
default:
UNREACHABLE();
}
- cgen_->UnloadReference(this);
}
// -- esp[0] : return address
// -- esp[4] : receiver
// -----------------------------------
-
Label miss;
__ mov(eax, Operand(esp, kPointerSize));
// -- esp[0] : return address
// -- esp[4] : receiver
// -----------------------------------
-
Label miss;
__ mov(eax, Operand(esp, kPointerSize));
// -- esp[0] : return address
// -- esp[4] : receiver
// -----------------------------------
-
Label miss;
__ mov(eax, Operand(esp, kPointerSize));
// -- ...
// -- esp[(argc + 1) * 4] : receiver
// -----------------------------------
-
Label miss, global_object, non_global_object;
// Get the receiver of the function from the stack; 1 ~ return address.
// -- esp[0] : return address
// -- esp[4] : receiver
// -----------------------------------
-
Label miss, probe, global;
__ mov(eax, Operand(esp, kPointerSize));
// -- esp[4] : receiver
// -----------------------------------
- // Move the return address below the arguments.
__ pop(ebx);
__ push(Operand(esp, 0));
__ push(ecx);
// -- esp[8] : receiver
// -----------------------------------
- // Move the return address below the arguments.
__ pop(ecx);
__ push(Operand(esp, 1 * kPointerSize));
__ push(Operand(esp, 1 * kPointerSize));
// -- esp[8] : receiver
// -----------------------------------
- // Move the return address below the arguments.
__ pop(ebx);
__ push(Operand(esp, 1 * kPointerSize));
__ push(ecx);
Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot();
ASSERT(slot != NULL);
cgen_->StoreToSlot(slot, init_state);
+ cgen_->UnloadReference(this);
break;
}
cgen_->frame()->Push(GetName());
Result answer = cgen_->frame()->CallStoreIC();
cgen_->frame()->Push(&answer);
+ cgen_->UnloadReference(this);
break;
}
masm->nop();
cgen_->frame()->Push(&answer);
}
+ cgen_->UnloadReference(this);
break;
}
default:
UNREACHABLE();
}
- cgen_->UnloadReference(this);
}
// -- rsp[8] : name
// -- rsp[16] : receiver
// -----------------------------------
+
GenerateGeneric(masm);
}
// rsp[(argc + 1) * 8] argument 0 = receiver
// rsp[(argc + 2) * 8] function name
// -----------------------------------
-
Label miss, global_object, non_global_object;
// Get the receiver of the function from the stack.
// -- rsp[0] : return address
// -- rsp[8] : receiver
// -----------------------------------
-
Label miss;
__ movq(rax, Operand(rsp, kPointerSize));
// -- rsp[0] : return address
// -- rsp[8] : receiver
// -----------------------------------
-
Label miss;
__ movq(rax, Operand(rsp, kPointerSize));
// -- rsp[0] : return address
// -- rsp[8] : receiver
// -----------------------------------
-
Label miss, probe, global;
__ movq(rax, Operand(rsp, kPointerSize));
// -- rsp[0] : return address
// -- rsp[8] : receiver
// -----------------------------------
-
Label miss;
__ movq(rax, Operand(rsp, kPointerSize));
// -- rsp[0] : return address
// -- rsp[8] : receiver
// -----------------------------------
+
__ pop(rbx);
__ push(Operand(rsp, 0)); // receiver
__ push(rcx); // name