// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #include "IrTranslateBuiltins.h" #include "Luau/Bytecode.h" #include "Luau/IrBuilder.h" #include "lstate.h" namespace Luau { namespace CodeGen { BuiltinImplResult translateBuiltinAssert(IrBuilder& build, int nparams, int ra, int arg, IrOp args, int nresults, IrOp fallback) { if (nparams < 1 || nresults != 0) return {BuiltinImplType::None, -1}; IrOp cont = build.block(IrBlockKind::Internal); // TODO: maybe adding a guard like CHECK_TRUTHY can be useful build.inst(IrCmd::JUMP_IF_FALSY, build.vmReg(arg), fallback, cont); build.beginBlock(cont); return {BuiltinImplType::UsesFallback, 0}; } BuiltinImplResult translateBuiltin(IrBuilder& build, int bfid, int ra, int arg, IrOp args, int nparams, int nresults, IrOp fallback) { switch (bfid) { case LBF_ASSERT: return translateBuiltinAssert(build, nparams, ra, arg, args, nresults, fallback); default: return {BuiltinImplType::None, -1}; } } } // namespace CodeGen } // namespace Luau