Bug 898381. r=mjrosenb

This commit is contained in:
Jan de Mooij 2013-07-30 10:23:55 +02:00
parent 70990dd2d4
commit fa20cc7bc5

View File

@ -2703,13 +2703,18 @@ MacroAssemblerARMCompat::extractTag(const BaseIndex &address, Register scratch)
} }
void void
MacroAssemblerARMCompat::moveValue(const Value &val, Register type, Register data) { MacroAssemblerARMCompat::moveValue(const Value &val, Register type, Register data)
{
jsval_layout jv = JSVAL_TO_IMPL(val); jsval_layout jv = JSVAL_TO_IMPL(val);
ma_mov(Imm32(jv.s.tag), type); ma_mov(Imm32(jv.s.tag), type);
ma_mov(Imm32(jv.s.payload.i32), data); if (val.isMarkable())
ma_mov(ImmGCPtr(reinterpret_cast<gc::Cell *>(val.toGCThing())), data);
else
ma_mov(Imm32(jv.s.payload.i32), data);
} }
void void
MacroAssemblerARMCompat::moveValue(const Value &val, const ValueOperand &dest) { MacroAssemblerARMCompat::moveValue(const Value &val, const ValueOperand &dest)
{
moveValue(val, dest.typeReg(), dest.payloadReg()); moveValue(val, dest.typeReg(), dest.payloadReg());
} }
@ -2717,7 +2722,8 @@ MacroAssemblerARMCompat::moveValue(const Value &val, const ValueOperand &dest) {
// X86/X64-common (ARM too now) interface. // X86/X64-common (ARM too now) interface.
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
void void
MacroAssemblerARMCompat::storeValue(ValueOperand val, Operand dst) { MacroAssemblerARMCompat::storeValue(ValueOperand val, Operand dst)
{
ma_str(val.payloadReg(), ToPayload(dst)); ma_str(val.payloadReg(), ToPayload(dst));
ma_str(val.typeReg(), ToType(dst)); ma_str(val.typeReg(), ToType(dst));
} }