mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
Bug 839367 - Add branchTestValue(Condition, Address, ValueOperand, Label) method. r=mjrosenb
This commit is contained in:
parent
89b9fabf30
commit
3e1f40de8b
@ -2259,6 +2259,19 @@ MacroAssemblerARMCompat::branchTestValue(Condition cond, const ValueOperand &val
|
||||
ma_b(label, cond);
|
||||
}
|
||||
|
||||
void
|
||||
MacroAssemblerARMCompat::branchTestValue(Condition cond, const Address &valaddr,
|
||||
const ValueOperand &value, Label *label)
|
||||
{
|
||||
JS_ASSERT(cond == Equal || cond == NotEqual);
|
||||
|
||||
ma_ldr(tagOf(valaddr), ScratchRegister);
|
||||
branchPtr(cond, ScratchRegister, value.typeReg(), label);
|
||||
|
||||
ma_ldr(payloadOf(valaddr), ScratchRegister);
|
||||
branchPtr(cond, ScratchRegister, value.payloadReg(), label);
|
||||
}
|
||||
|
||||
// unboxing code
|
||||
void
|
||||
MacroAssemblerARMCompat::unboxInt32(const ValueOperand &operand, const Register &dest)
|
||||
|
@ -578,6 +578,8 @@ class MacroAssemblerARMCompat : public MacroAssemblerARM
|
||||
}
|
||||
|
||||
void branchTestValue(Condition cond, const ValueOperand &value, const Value &v, Label *label);
|
||||
void branchTestValue(Condition cond, const Address &valaddr, const ValueOperand &value,
|
||||
Label *label);
|
||||
|
||||
// unboxing code
|
||||
void unboxInt32(const ValueOperand &operand, const Register &dest);
|
||||
|
@ -652,6 +652,12 @@ class MacroAssemblerX64 : public MacroAssemblerX86Shared
|
||||
cmpq(value.valueReg(), ScratchReg);
|
||||
j(cond, label);
|
||||
}
|
||||
void branchTestValue(Condition cond, const Address &valaddr, const ValueOperand &value,
|
||||
Label *label)
|
||||
{
|
||||
JS_ASSERT(cond == Equal || cond == NotEqual);
|
||||
branchPtr(cond, valaddr, value.valueReg(), label);
|
||||
}
|
||||
|
||||
void boxDouble(const FloatRegister &src, const ValueOperand &dest) {
|
||||
movqsd(src, dest.valueReg());
|
||||
|
@ -190,6 +190,7 @@ MacroAssemblerX86::branchTestValue(Condition cond, const ValueOperand &value, co
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Assembler::Condition
|
||||
MacroAssemblerX86::testNegativeZero(const FloatRegister ®, const Register &scratch)
|
||||
{
|
||||
|
@ -328,6 +328,13 @@ class MacroAssemblerX86 : public MacroAssemblerX86Shared
|
||||
}
|
||||
|
||||
void branchTestValue(Condition cond, const ValueOperand &value, const Value &v, Label *label);
|
||||
void branchTestValue(Condition cond, const Address &valaddr, const ValueOperand &value,
|
||||
Label *label)
|
||||
{
|
||||
JS_ASSERT(cond == Equal || cond == NotEqual);
|
||||
branchPtr(cond, tagOf(valaddr), value.typeReg(), label);
|
||||
branchPtr(cond, payloadOf(valaddr), value.payloadReg(), label);
|
||||
}
|
||||
|
||||
void cmpPtr(Register lhs, const ImmWord rhs) {
|
||||
cmpl(lhs, Imm32(rhs.value));
|
||||
|
Loading…
Reference in New Issue
Block a user