luaur_code_gen/functions/
builtin_check_double.rs1use crate::enums::ir_const_kind::IrConstKind;
2use crate::enums::ir_op_kind::IrOpKind;
3use crate::macros::codegen_assert::CODEGEN_ASSERT;
4use crate::records::ir_builder::IrBuilder;
5use crate::records::ir_op::IrOp;
6use luaur_vm::enums::lua_type::lua_Type;
7
8pub fn builtin_check_double(build: &mut IrBuilder, arg: IrOp, pcpos: i32) {
9 if arg.kind() == IrOpKind::Constant {
10 CODEGEN_ASSERT!(build.function.const_op(arg).kind == IrConstKind::Double);
11 } else {
12 let exit = build.vm_exit(pcpos as u32);
13 build.load_and_check_tag(arg, lua_Type::LUA_TNUMBER as u8, exit);
14 }
15}