Change inlining of intrinsics.

This commit is contained in:
wolfbeast 2018-04-06 13:24:25 -04:00 committed by Roy Tam
commit 8f16d02c34
16 changed files with 206 additions and 40 deletions

View file

@ -11528,6 +11528,32 @@ CodeGenerator::visitHasClass(LHasClass* ins)
masm.cmpPtrSet(Assembler::Equal, output, ImmPtr(ins->mir()->getClass()), output);
}
void
CodeGenerator::visitGuardToClass(LGuardToClass* ins)
{
Register lhs = ToRegister(ins->lhs());
Register output = ToRegister(ins->output());
Register temp = ToRegister(ins->temp());
Label notEqual;
masm.branchTestObjClass(Assembler::NotEqual, lhs, temp, ins->mir()->getClass(), &notEqual);
masm.mov(lhs, output);
if (ins->mir()->type() == MIRType::Object) {
// Can't return null-return here, so bail
bailoutFrom(&notEqual, ins->snapshot());
} else {
Label done;
masm.jump(&done);
masm.bind(&notEqual);
masm.mov(ImmPtr(0), output);
masm.bind(&done);
}
}
void
CodeGenerator::visitWasmParameter(LWasmParameter* lir)
{