[mips] Fix Load/StoreGlobalContext stubs.

Fix invalid tail calls and wrong context register.

R=ishell@chromium.org

Review URL: https://codereview.chromium.org/1257603004

Cr-Commit-Position: refs/heads/master@{#29844}
This commit is contained in:
bmeurer 2015-07-24 05:37:07 -07:00 committed by Commit bot
parent cb6e705686
commit dd1a26de5c
2 changed files with 8 additions and 12 deletions

View File

@ -5285,7 +5285,7 @@ void LoadGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Load the PropertyCell value at the specified slot.
__ sll(at, slot_reg, kPointerSizeLog2);
__ Addu(at, at, Operand(cp));
__ Addu(at, at, Operand(context_reg));
__ Addu(at, at, Context::SlotOffset(0));
__ lw(result_reg, MemOperand(at));
__ lw(result_reg, FieldMemOperand(result_reg, PropertyCell::kValueOffset));
@ -5298,8 +5298,7 @@ void LoadGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Fallback to the runtime.
__ bind(&slow_case);
__ SmiTag(slot_reg);
__ Drop(1); // Pop return address.
__ Push(slot_reg, name_reg, result_reg);
__ Push(slot_reg, name_reg);
__ TailCallRuntime(Runtime::kLoadGlobalViaContext, 2, 1);
}
@ -5327,7 +5326,7 @@ void StoreGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Load the PropertyCell at the specified slot.
__ sll(at, slot_reg, kPointerSizeLog2);
__ Addu(at, at, Operand(cp));
__ Addu(at, at, Operand(context_reg));
__ Addu(at, at, Context::SlotOffset(0));
__ lw(cell_reg, MemOperand(at));
@ -5410,8 +5409,7 @@ void StoreGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Fallback to the runtime.
__ bind(&slow_case);
__ SmiTag(slot_reg);
__ Drop(1); // Pop return address.
__ Push(slot_reg, name_reg, value_reg, cell_reg);
__ Push(slot_reg, name_reg, value_reg);
__ TailCallRuntime(is_strict(language_mode())
? Runtime::kStoreGlobalViaContext_Strict
: Runtime::kStoreGlobalViaContext_Sloppy,

View File

@ -5316,7 +5316,7 @@ void LoadGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Load the PropertyCell value at the specified slot.
__ dsll(at, slot_reg, kPointerSizeLog2);
__ Daddu(at, at, Operand(cp));
__ Daddu(at, at, Operand(context_reg));
__ Daddu(at, at, Context::SlotOffset(0));
__ ld(result_reg, MemOperand(at));
__ ld(result_reg, FieldMemOperand(result_reg, PropertyCell::kValueOffset));
@ -5329,8 +5329,7 @@ void LoadGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Fallback to the runtime.
__ bind(&slow_case);
__ SmiTag(slot_reg);
__ Drop(1); // Pop return address.
__ Push(slot_reg, name_reg, result_reg);
__ Push(slot_reg, name_reg);
__ TailCallRuntime(Runtime::kLoadGlobalViaContext, 2, 1);
}
@ -5358,7 +5357,7 @@ void StoreGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Load the PropertyCell at the specified slot.
__ dsll(at, slot_reg, kPointerSizeLog2);
__ Daddu(at, at, Operand(cp));
__ Daddu(at, at, Operand(context_reg));
__ Daddu(at, at, Context::SlotOffset(0));
__ ld(cell_reg, MemOperand(at));
@ -5441,8 +5440,7 @@ void StoreGlobalViaContextStub::Generate(MacroAssembler* masm) {
// Fallback to the runtime.
__ bind(&slow_case);
__ SmiTag(slot_reg);
__ Drop(1); // Pop return address.
__ Push(slot_reg, name_reg, value_reg, cell_reg);
__ Push(slot_reg, name_reg, value_reg);
__ TailCallRuntime(is_strict(language_mode())
? Runtime::kStoreGlobalViaContext_Strict
: Runtime::kStoreGlobalViaContext_Sloppy,