Bug 1434835 : Port changes from Bug 1432479; r=nbp.

This commit is contained in:
Dragan Mladjenovic 2018-02-01 00:00:00 +02:00
parent 5504a4c66c
commit 1fc86397cb
2 changed files with 24 additions and 10 deletions

View File

@ -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;

View File

@ -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);