diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-04-06 13:24:25 -0400 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-06-07 04:02:17 +0200 |
commit | ff901dc5267903b165c53139ddcff5f31bbf6964 (patch) | |
tree | ab177a9db308073fc699417b857841f4ca6eebba /js/src/jit/CodeGenerator.cpp | |
parent | 12e3ee76966664ca0330738a07c7afb9fd754857 (diff) | |
download | UXP-ff901dc5267903b165c53139ddcff5f31bbf6964.tar UXP-ff901dc5267903b165c53139ddcff5f31bbf6964.tar.gz UXP-ff901dc5267903b165c53139ddcff5f31bbf6964.tar.lz UXP-ff901dc5267903b165c53139ddcff5f31bbf6964.tar.xz UXP-ff901dc5267903b165c53139ddcff5f31bbf6964.zip |
Change inlining of intrinsics.
Diffstat (limited to 'js/src/jit/CodeGenerator.cpp')
-rw-r--r-- | js/src/jit/CodeGenerator.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp index 7b2f8214b..16d026092 100644 --- a/js/src/jit/CodeGenerator.cpp +++ b/js/src/jit/CodeGenerator.cpp @@ -11529,6 +11529,32 @@ CodeGenerator::visitHasClass(LHasClass* ins) } 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(), ¬Equal); + masm.mov(lhs, output); + + if (ins->mir()->type() == MIRType::Object) { + // Can't return null-return here, so bail + bailoutFrom(¬Equal, ins->snapshot()); + } else { + Label done; + masm.jump(&done); + + masm.bind(¬Equal); + masm.mov(ImmPtr(0), output); + + masm.bind(&done); + } +} + +void CodeGenerator::visitWasmParameter(LWasmParameter* lir) { } |