MIPS: fix bug in KeyedStoreIC::GenerateNonStrictArguments()
r8425 (1081f75) had fixed this originally, but those changes were accidentally reverted when the experimental/gc branch was merged at r9600. BUG= TEST=debug mozilla regress-137181 Review URL: http://codereview.chromium.org/9026006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
3947056c03
commit
2961627f11
@ -868,22 +868,26 @@ void KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) {
|
||||
// -- lr : return address
|
||||
// -----------------------------------
|
||||
Label slow, notin;
|
||||
// Store address is returned in register (of MemOperand) mapped_location.
|
||||
MemOperand mapped_location =
|
||||
GenerateMappedArgumentsLookup(masm, a2, a1, a3, t0, t1, ¬in, &slow);
|
||||
__ sw(a0, mapped_location);
|
||||
__ Addu(t2, a3, t1);
|
||||
__ mov(t5, a0);
|
||||
__ RecordWrite(a3, t2, t5, kRAHasNotBeenSaved, kDontSaveFPRegs);
|
||||
ASSERT_EQ(mapped_location.offset(), 0);
|
||||
__ RecordWrite(a3, mapped_location.rm(), t5,
|
||||
kRAHasNotBeenSaved, kDontSaveFPRegs);
|
||||
__ Ret(USE_DELAY_SLOT);
|
||||
__ mov(v0, a0); // (In delay slot) return the value stored in v0.
|
||||
__ bind(¬in);
|
||||
// The unmapped lookup expects that the parameter map is in a3.
|
||||
// Store address is returned in register (of MemOperand) unmapped_location.
|
||||
MemOperand unmapped_location =
|
||||
GenerateUnmappedArgumentsLookup(masm, a1, a3, t0, &slow);
|
||||
__ sw(a0, unmapped_location);
|
||||
__ Addu(t2, a3, t0);
|
||||
__ mov(t5, a0);
|
||||
__ RecordWrite(a3, t2, t5, kRAHasNotBeenSaved, kDontSaveFPRegs);
|
||||
ASSERT_EQ(unmapped_location.offset(), 0);
|
||||
__ RecordWrite(a3, unmapped_location.rm(), t5,
|
||||
kRAHasNotBeenSaved, kDontSaveFPRegs);
|
||||
__ Ret(USE_DELAY_SLOT);
|
||||
__ mov(v0, a0); // (In delay slot) return the value stored in v0.
|
||||
__ bind(&slow);
|
||||
|
Loading…
Reference in New Issue
Block a user