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.