Reviewers: fschneider, Søren Gjesse,
Description:
MIPS: update missing write barrier for arguments store ICs, per comments.
Per review comments in http://codereview.chromium.org/7238020 after
issue was closed, we had used an un-necessary Add, which is removed here.
Thanks for the suggestion.
BUG=
TEST=
Please review this at http://codereview.chromium.org/7259010/
Affected files:
M src/mips/assembler-mips.h
M src/mips/ic-mips.cc
Index: src/mips/assembler-mips.h
diff --git a/src/mips/assembler-mips.h b/src/mips/assembler-mips.h
index
1a83b7389136abbf542fb9e1220c3cce37e45655..aeecee616bc9ebcd71568416ebaf36b106ce94e9
100644
--- a/src/mips/assembler-mips.h
+++ b/src/mips/assembler-mips.h
@@ -329,6 +329,7 @@ class Operand BASE_EMBEDDED {
class MemOperand : public Operand {
public:
explicit MemOperand(Register rn, int32_t offset = 0);
+ int32_t offset() const { return offset_; }
private:
int32_t offset_;
Index: src/mips/ic-mips.cc
diff --git a/src/mips/ic-mips.cc b/src/mips/ic-mips.cc
index
16f969546bce1fd955225f18fcd78349739505c5..36d71151418b4d35c03076c5f4e13c511b26404d
100644
--- a/src/mips/ic-mips.cc
+++ b/src/mips/ic-mips.cc
@@ -1006,8 +1006,9 @@ void
KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) {
MemOperand mapped_location =
GenerateMappedArgumentsLookup(masm, a2, a1, a3, t0, t1, ¬in,
&slow);
__ sw(a0, mapped_location);
- __ Addu(t2, a3, t1);
- __ RecordWrite(a3, t2, t5);
+ // Verify mapped_location MemOperand is register, with no offset.
+ ASSERT_EQ(mapped_location.offset(), 0);
+ __ RecordWrite(a3, mapped_location.rm(), t5);
__ Ret(USE_DELAY_SLOT);
__ mov(v0, a0); // (In delay slot) return the value stored in v0.
__ bind(¬in);
@@ -1015,8 +1016,8 @@ void
KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) {
MemOperand unmapped_location =
GenerateUnmappedArgumentsLookup(masm, a1, a3, t0, &slow);
__ sw(a0, unmapped_location);
- __ Addu(t2, a3, t0);
- __ RecordWrite(a3, t2, t5);
+ ASSERT_EQ(unmapped_location.offset(), 0);
+ __ RecordWrite(a3, unmapped_location.rm(), t5);
__ Ret(USE_DELAY_SLOT);
__ mov(v0, a0); // (In delay slot) return the value stored in v0.
__ bind(&slow);
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev