MIPS: Store doubles before calling into the elements transition stub

Port r16172 (cc2b6204)

BUG=

Review URL: https://codereview.chromium.org/23110002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16182 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
palfia@homejinni.com 2013-08-13 23:34:34 +00:00
parent 6f800f90ee
commit e12b6ff35d

View File

@ -4405,12 +4405,13 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) {
__ RecordWriteField(object_reg, HeapObject::kMapOffset, new_map_reg, __ RecordWriteField(object_reg, HeapObject::kMapOffset, new_map_reg,
scratch, GetRAState(), kDontSaveFPRegs); scratch, GetRAState(), kDontSaveFPRegs);
} else { } else {
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters); PushSafepointRegistersScope scope(
this, Safepoint::kWithRegistersAndDoubles);
__ mov(a0, object_reg); __ mov(a0, object_reg);
__ li(a1, Operand(to_map)); __ li(a1, Operand(to_map));
TransitionElementsKindStub stub(from_kind, to_kind); TransitionElementsKindStub stub(from_kind, to_kind);
__ CallStub(&stub); __ CallStub(&stub);
RecordSafepointWithRegisters( RecordSafepointWithRegistersAndDoubles(
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt); instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
} }
__ bind(&not_applicable); __ bind(&not_applicable);