Commit dd1a26de authored by bmeurer's avatar bmeurer Committed by Commit bot

[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}
parent cb6e7056
......@@ -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,
......
......@@ -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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment