Reviewers: Igor Sheludko,

Description:
[mips] Fix Load/StoreGlobalContext stubs.

Fix invalid tail calls and wrong context register.

[email protected]

Please review this at https://codereview.chromium.org/1257603004/

Base URL: https://chromium.googlesource.com/v8/v8.git@master

Affected files (+8, -12 lines):
  M src/mips/code-stubs-mips.cc
  M src/mips64/code-stubs-mips64.cc


Index: src/mips/code-stubs-mips.cc
diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
index 272fedafe8b6746659147219fca607d26cc33ed0..7dbc5d8e7359dc7d5b07a1a95b117e498eedf8ef 100644
--- a/src/mips/code-stubs-mips.cc
+++ b/src/mips/code-stubs-mips.cc
@@ -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,
Index: src/mips64/code-stubs-mips64.cc
diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc index d8797ffab7895c77b54bf29eca1c4c77403d9458..dad5e75fd75b47f3f7d0d560aefa0cbdd71be4aa 100644
--- a/src/mips64/code-stubs-mips64.cc
+++ b/src/mips64/code-stubs-mips64.cc
@@ -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,


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to