[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:
parent
cb6e705686
commit
dd1a26de5c
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user