luaur_compiler/methods/
compiler_get_jump_op_compare.rs1use crate::records::compiler::Compiler;
2use luaur_ast::records::ast_expr_binary::AstExprBinaryOp;
3use luaur_common::enums::luau_opcode::LuauOpcode;
4use luaur_common::macros::luau_assert::LUAU_ASSERT;
5
6impl Compiler {
7 pub fn get_jump_op_compare(&mut self, op: AstExprBinaryOp, not_: bool) -> LuauOpcode {
8 match op {
9 AstExprBinaryOp::CompareNe => {
10 if not_ {
11 LuauOpcode::LOP_JUMPIFEQ
12 } else {
13 LuauOpcode::LOP_JUMPIFNOTEQ
14 }
15 }
16 AstExprBinaryOp::CompareEq => {
17 if not_ {
18 LuauOpcode::LOP_JUMPIFNOTEQ
19 } else {
20 LuauOpcode::LOP_JUMPIFEQ
21 }
22 }
23 AstExprBinaryOp::CompareLt | AstExprBinaryOp::CompareGt => {
24 if not_ {
25 LuauOpcode::LOP_JUMPIFNOTLT
26 } else {
27 LuauOpcode::LOP_JUMPIFLT
28 }
29 }
30 AstExprBinaryOp::CompareLe | AstExprBinaryOp::CompareGe => {
31 if not_ {
32 LuauOpcode::LOP_JUMPIFNOTLE
33 } else {
34 LuauOpcode::LOP_JUMPIFLE
35 }
36 }
37 _ => {
38 LUAU_ASSERT!(false);
39 LuauOpcode::LOP_NOP
40 }
41 }
42 }
43}