Coverage Report

Created: 2026-02-23 20:32

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/Users/alexjokela/projects/lattice/src/regopcode.c
Line
Count
Source
1
#include "regopcode.h"
2
3
static const char *names[] = {
4
    [ROP_MOVE]         = "MOVE",
5
    [ROP_LOADK]        = "LOADK",
6
    [ROP_LOADI]        = "LOADI",
7
    [ROP_LOADNIL]      = "LOADNIL",
8
    [ROP_LOADTRUE]     = "LOADTRUE",
9
    [ROP_LOADFALSE]    = "LOADFALSE",
10
    [ROP_LOADUNIT]     = "LOADUNIT",
11
    [ROP_ADD]          = "ADD",
12
    [ROP_SUB]          = "SUB",
13
    [ROP_MUL]          = "MUL",
14
    [ROP_DIV]          = "DIV",
15
    [ROP_MOD]          = "MOD",
16
    [ROP_NEG]          = "NEG",
17
    [ROP_ADDI]         = "ADDI",
18
    [ROP_CONCAT]       = "CONCAT",
19
    [ROP_EQ]           = "EQ",
20
    [ROP_NEQ]          = "NEQ",
21
    [ROP_LT]           = "LT",
22
    [ROP_LTEQ]         = "LTEQ",
23
    [ROP_GT]           = "GT",
24
    [ROP_GTEQ]         = "GTEQ",
25
    [ROP_NOT]          = "NOT",
26
    [ROP_JMP]          = "JMP",
27
    [ROP_JMPFALSE]     = "JMPFALSE",
28
    [ROP_JMPTRUE]      = "JMPTRUE",
29
    [ROP_GETGLOBAL]    = "GETGLOBAL",
30
    [ROP_SETGLOBAL]    = "SETGLOBAL",
31
    [ROP_DEFINEGLOBAL] = "DEFINEGLOBAL",
32
    [ROP_GETFIELD]     = "GETFIELD",
33
    [ROP_SETFIELD]     = "SETFIELD",
34
    [ROP_GETINDEX]     = "GETINDEX",
35
    [ROP_SETINDEX]     = "SETINDEX",
36
    [ROP_GETUPVALUE]   = "GETUPVALUE",
37
    [ROP_SETUPVALUE]   = "SETUPVALUE",
38
    [ROP_CLOSEUPVALUE] = "CLOSEUPVALUE",
39
    [ROP_CALL]         = "CALL",
40
    [ROP_RETURN]       = "RETURN",
41
    [ROP_CLOSURE]      = "CLOSURE",
42
    [ROP_NEWARRAY]     = "NEWARRAY",
43
    [ROP_NEWSTRUCT]    = "NEWSTRUCT",
44
    [ROP_BUILDRANGE]   = "BUILDRANGE",
45
    [ROP_LEN]          = "LEN",
46
    [ROP_PRINT]        = "PRINT",
47
    [ROP_INVOKE]       = "INVOKE",
48
    [ROP_FREEZE]       = "FREEZE",
49
    [ROP_THAW]         = "THAW",
50
    [ROP_CLONE]        = "CLONE",
51
    [ROP_ITERINIT]     = "ITERINIT",
52
    [ROP_ITERNEXT]     = "ITERNEXT",
53
    [ROP_MARKFLUID]    = "MARKFLUID",
54
    /* Bitwise */
55
    [ROP_BIT_AND]      = "BIT_AND",
56
    [ROP_BIT_OR]       = "BIT_OR",
57
    [ROP_BIT_XOR]      = "BIT_XOR",
58
    [ROP_BIT_NOT]      = "BIT_NOT",
59
    [ROP_LSHIFT]       = "LSHIFT",
60
    [ROP_RSHIFT]       = "RSHIFT",
61
    /* Tuple */
62
    [ROP_NEWTUPLE]     = "NEWTUPLE",
63
    /* Spread/Flatten */
64
    [ROP_ARRAY_FLATTEN] = "ARRAY_FLATTEN",
65
    /* Enum */
66
    [ROP_NEWENUM]      = "NEWENUM",
67
    /* Optional chaining */
68
    [ROP_JMPNOTNIL]    = "JMPNOTNIL",
69
    /* Exception handling */
70
    [ROP_PUSH_HANDLER] = "PUSH_HANDLER",
71
    [ROP_POP_HANDLER]  = "POP_HANDLER",
72
    [ROP_THROW]        = "THROW",
73
    [ROP_TRY_UNWRAP]   = "TRY_UNWRAP",
74
    /* Defer */
75
    [ROP_DEFER_PUSH]   = "DEFER_PUSH",
76
    [ROP_DEFER_RUN]    = "DEFER_RUN",
77
    /* Variadic */
78
    [ROP_COLLECT_VARARGS] = "COLLECT_VARARGS",
79
    /* Advanced phase */
80
    [ROP_FREEZE_VAR]   = "FREEZE_VAR",
81
    [ROP_THAW_VAR]     = "THAW_VAR",
82
    [ROP_SUBLIMATE_VAR] = "SUBLIMATE_VAR",
83
    [ROP_REACT]        = "REACT",
84
    [ROP_UNREACT]      = "UNREACT",
85
    [ROP_BOND]         = "BOND",
86
    [ROP_UNBOND]       = "UNBOND",
87
    [ROP_SEED]         = "SEED",
88
    [ROP_UNSEED]       = "UNSEED",
89
    /* Module/Import */
90
    [ROP_IMPORT]       = "IMPORT",
91
    /* Concurrency */
92
    [ROP_SCOPE]        = "SCOPE",
93
    [ROP_SELECT]       = "SELECT",
94
    /* Ephemeral arena */
95
    [ROP_RESET_EPHEMERAL] = "RESET_EPHEMERAL",
96
    /* Optimization */
97
    [ROP_ADD_INT]      = "ADD_INT",
98
    [ROP_SUB_INT]      = "SUB_INT",
99
    [ROP_MUL_INT]      = "MUL_INT",
100
    [ROP_LT_INT]       = "LT_INT",
101
    [ROP_LTEQ_INT]     = "LTEQ_INT",
102
    [ROP_INC_REG]      = "INC_REG",
103
    [ROP_DEC_REG]      = "DEC_REG",
104
    [ROP_SETINDEX_LOCAL] = "SETINDEX_LOCAL",
105
    [ROP_INVOKE_GLOBAL] = "INVOKE_GLOBAL",
106
    /* Phase query */
107
    [ROP_IS_CRYSTAL]   = "IS_CRYSTAL",
108
    /* Type checking */
109
    [ROP_CHECK_TYPE]   = "CHECK_TYPE",
110
    [ROP_FREEZE_FIELD] = "FREEZE_FIELD",
111
    [ROP_THAW_FIELD]   = "THAW_FIELD",
112
    /* Require */
113
    [ROP_REQUIRE]      = "REQUIRE",
114
    /* Misc */
115
    [ROP_HALT]         = "HALT",
116
};
117
118
0
const char *reg_opcode_name(RegOpcode op) {
119
0
    if (op >= ROP_COUNT) return "UNKNOWN";
120
0
    return names[op] ? names[op] : "UNKNOWN";
121
0
}