mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 18:55:30 +00:00
Bug 1434835 : Port changes from Bug 1432479; r=nbp.
This commit is contained in:
parent
5504a4c66c
commit
1fc86397cb
@ -1264,20 +1264,20 @@ MacroAssemblerMIPSCompat::testUndefinedSet(Condition cond, const ValueOperand& v
|
||||
|
||||
// unboxing code
|
||||
void
|
||||
MacroAssemblerMIPSCompat::unboxNonDouble(const ValueOperand& operand, Register dest)
|
||||
MacroAssemblerMIPSCompat::unboxNonDouble(const ValueOperand& operand, Register dest, JSValueType)
|
||||
{
|
||||
if (operand.payloadReg() != dest)
|
||||
ma_move(dest, operand.payloadReg());
|
||||
}
|
||||
|
||||
void
|
||||
MacroAssemblerMIPSCompat::unboxNonDouble(const Address& src, Register dest)
|
||||
MacroAssemblerMIPSCompat::unboxNonDouble(const Address& src, Register dest, JSValueType)
|
||||
{
|
||||
ma_lw(dest, Address(src.base, src.offset + PAYLOAD_OFFSET));
|
||||
}
|
||||
|
||||
void
|
||||
MacroAssemblerMIPSCompat::unboxNonDouble(const BaseIndex& src, Register dest)
|
||||
MacroAssemblerMIPSCompat::unboxNonDouble(const BaseIndex& src, Register dest, JSValueType)
|
||||
{
|
||||
computeScaledAddress(src, SecondScratchReg);
|
||||
ma_lw(dest, Address(SecondScratchReg, src.offset + PAYLOAD_OFFSET));
|
||||
@ -1348,7 +1348,7 @@ MacroAssemblerMIPSCompat::unboxObject(const Address& src, Register dest)
|
||||
}
|
||||
|
||||
void
|
||||
MacroAssemblerMIPSCompat::unboxValue(const ValueOperand& src, AnyRegister dest)
|
||||
MacroAssemblerMIPSCompat::unboxValue(const ValueOperand& src, AnyRegister dest, JSValueType)
|
||||
{
|
||||
if (dest.isFloat()) {
|
||||
Label notInt32, end;
|
||||
|
@ -333,9 +333,9 @@ class MacroAssemblerMIPSCompat : public MacroAssemblerMIPS
|
||||
}
|
||||
|
||||
// unboxing code
|
||||
void unboxNonDouble(const ValueOperand& operand, Register dest);
|
||||
void unboxNonDouble(const Address& src, Register dest);
|
||||
void unboxNonDouble(const BaseIndex& src, Register dest);
|
||||
void unboxNonDouble(const ValueOperand& operand, Register dest, JSValueType);
|
||||
void unboxNonDouble(const Address& src, Register dest, JSValueType);
|
||||
void unboxNonDouble(const BaseIndex& src, Register dest, JSValueType);
|
||||
void unboxInt32(const ValueOperand& operand, Register dest);
|
||||
void unboxInt32(const Address& src, Register dest);
|
||||
void unboxBoolean(const ValueOperand& operand, Register dest);
|
||||
@ -346,10 +346,18 @@ class MacroAssemblerMIPSCompat : public MacroAssemblerMIPS
|
||||
void unboxString(const Address& src, Register dest);
|
||||
void unboxObject(const ValueOperand& src, Register dest);
|
||||
void unboxObject(const Address& src, Register dest);
|
||||
void unboxObject(const BaseIndex& src, Register dest) { unboxNonDouble(src, dest); }
|
||||
void unboxValue(const ValueOperand& src, AnyRegister dest);
|
||||
void unboxObject(const BaseIndex& src, Register dest)
|
||||
{
|
||||
unboxNonDouble(src, dest, JSVAL_TYPE_OBJECT);
|
||||
}
|
||||
void unboxValue(const ValueOperand& src, AnyRegister dest, JSValueType);
|
||||
void unboxPrivate(const ValueOperand& src, Register dest);
|
||||
|
||||
void unboxGCThingForPreBarrierTrampoline(const Address& src, Register dest)
|
||||
{
|
||||
unboxObject(src, dest);
|
||||
}
|
||||
|
||||
void notBoolean(const ValueOperand& val) {
|
||||
as_xori(val.payloadReg(), val.payloadReg(), 1);
|
||||
}
|
||||
@ -365,6 +373,12 @@ class MacroAssemblerMIPSCompat : public MacroAssemblerMIPS
|
||||
Register extractObject(const ValueOperand& value, Register scratch) {
|
||||
return value.payloadReg();
|
||||
}
|
||||
Register extractString(const ValueOperand& value, Register scratch) {
|
||||
return value.payloadReg();
|
||||
}
|
||||
Register extractSymbol(const ValueOperand& value, Register scratch) {
|
||||
return value.payloadReg();
|
||||
}
|
||||
Register extractInt32(const ValueOperand& value, Register scratch) {
|
||||
return value.payloadReg();
|
||||
}
|
||||
@ -437,7 +451,7 @@ class MacroAssemblerMIPSCompat : public MacroAssemblerMIPS
|
||||
MIRType slotType);
|
||||
|
||||
template <typename T>
|
||||
void storeUnboxedPayload(ValueOperand value, T address, size_t nbytes) {
|
||||
void storeUnboxedPayload(ValueOperand value, T address, size_t nbytes, JSValueType) {
|
||||
switch (nbytes) {
|
||||
case 4:
|
||||
store32(value.payloadReg(), address);
|
||||
|
Loading…
Reference in New Issue
Block a user