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/stackopcode.c
Line
Count
Source
1
#include "stackopcode.h"
2
#include <stddef.h>
3
4
static const char *names[] = {
5
    [OP_CONSTANT]      = "OP_CONSTANT",
6
    [OP_NIL]           = "OP_NIL",
7
    [OP_TRUE]          = "OP_TRUE",
8
    [OP_FALSE]         = "OP_FALSE",
9
    [OP_UNIT]          = "OP_UNIT",
10
    [OP_POP]           = "OP_POP",
11
    [OP_DUP]           = "OP_DUP",
12
    [OP_SWAP]          = "OP_SWAP",
13
    [OP_ADD]           = "OP_ADD",
14
    [OP_SUB]           = "OP_SUB",
15
    [OP_MUL]           = "OP_MUL",
16
    [OP_DIV]           = "OP_DIV",
17
    [OP_MOD]           = "OP_MOD",
18
    [OP_NEG]           = "OP_NEG",
19
    [OP_NOT]           = "OP_NOT",
20
    [OP_BIT_AND]       = "OP_BIT_AND",
21
    [OP_BIT_OR]        = "OP_BIT_OR",
22
    [OP_BIT_XOR]       = "OP_BIT_XOR",
23
    [OP_BIT_NOT]       = "OP_BIT_NOT",
24
    [OP_LSHIFT]        = "OP_LSHIFT",
25
    [OP_RSHIFT]        = "OP_RSHIFT",
26
    [OP_EQ]            = "OP_EQ",
27
    [OP_NEQ]           = "OP_NEQ",
28
    [OP_LT]            = "OP_LT",
29
    [OP_GT]            = "OP_GT",
30
    [OP_LTEQ]          = "OP_LTEQ",
31
    [OP_GTEQ]          = "OP_GTEQ",
32
    [OP_CONCAT]        = "OP_CONCAT",
33
    [OP_GET_LOCAL]     = "OP_GET_LOCAL",
34
    [OP_SET_LOCAL]     = "OP_SET_LOCAL",
35
    [OP_GET_GLOBAL]    = "OP_GET_GLOBAL",
36
    [OP_SET_GLOBAL]    = "OP_SET_GLOBAL",
37
    [OP_DEFINE_GLOBAL] = "OP_DEFINE_GLOBAL",
38
    [OP_GET_UPVALUE]   = "OP_GET_UPVALUE",
39
    [OP_SET_UPVALUE]   = "OP_SET_UPVALUE",
40
    [OP_CLOSE_UPVALUE] = "OP_CLOSE_UPVALUE",
41
    [OP_JUMP]          = "OP_JUMP",
42
    [OP_JUMP_IF_FALSE] = "OP_JUMP_IF_FALSE",
43
    [OP_JUMP_IF_TRUE]  = "OP_JUMP_IF_TRUE",
44
    [OP_JUMP_IF_NOT_NIL] = "OP_JUMP_IF_NOT_NIL",
45
    [OP_LOOP]          = "OP_LOOP",
46
    [OP_CALL]          = "OP_CALL",
47
    [OP_CLOSURE]       = "OP_CLOSURE",
48
    [OP_RETURN]        = "OP_RETURN",
49
    [OP_ITER_INIT]     = "OP_ITER_INIT",
50
    [OP_ITER_NEXT]     = "OP_ITER_NEXT",
51
    [OP_BUILD_ARRAY]   = "OP_BUILD_ARRAY",
52
    [OP_ARRAY_FLATTEN] = "OP_ARRAY_FLATTEN",
53
    [OP_BUILD_MAP]     = "OP_BUILD_MAP",
54
    [OP_BUILD_TUPLE]   = "OP_BUILD_TUPLE",
55
    [OP_BUILD_STRUCT]  = "OP_BUILD_STRUCT",
56
    [OP_BUILD_RANGE]   = "OP_BUILD_RANGE",
57
    [OP_BUILD_ENUM]    = "OP_BUILD_ENUM",
58
    [OP_INDEX]         = "OP_INDEX",
59
    [OP_SET_INDEX]     = "OP_SET_INDEX",
60
    [OP_GET_FIELD]     = "OP_GET_FIELD",
61
    [OP_SET_FIELD]     = "OP_SET_FIELD",
62
    [OP_INVOKE]        = "OP_INVOKE",
63
    [OP_INVOKE_LOCAL]  = "OP_INVOKE_LOCAL",
64
    [OP_INVOKE_GLOBAL] = "OP_INVOKE_GLOBAL",
65
    [OP_SET_INDEX_LOCAL] = "OP_SET_INDEX_LOCAL",
66
    [OP_PUSH_EXCEPTION_HANDLER] = "OP_PUSH_EXCEPTION_HANDLER",
67
    [OP_POP_EXCEPTION_HANDLER]  = "OP_POP_EXCEPTION_HANDLER",
68
    [OP_THROW]         = "OP_THROW",
69
    [OP_TRY_UNWRAP]    = "OP_TRY_UNWRAP",
70
    [OP_DEFER_PUSH]    = "OP_DEFER_PUSH",
71
    [OP_DEFER_RUN]     = "OP_DEFER_RUN",
72
    [OP_FREEZE]        = "OP_FREEZE",
73
    [OP_THAW]          = "OP_THAW",
74
    [OP_CLONE]         = "OP_CLONE",
75
    [OP_MARK_FLUID]    = "OP_MARK_FLUID",
76
    [OP_REACT]         = "OP_REACT",
77
    [OP_UNREACT]       = "OP_UNREACT",
78
    [OP_BOND]          = "OP_BOND",
79
    [OP_UNBOND]        = "OP_UNBOND",
80
    [OP_SEED]          = "OP_SEED",
81
    [OP_UNSEED]        = "OP_UNSEED",
82
    [OP_FREEZE_VAR]    = "OP_FREEZE_VAR",
83
    [OP_THAW_VAR]      = "OP_THAW_VAR",
84
    [OP_SUBLIMATE_VAR] = "OP_SUBLIMATE_VAR",
85
    [OP_SUBLIMATE]     = "OP_SUBLIMATE",
86
    [OP_PRINT]         = "OP_PRINT",
87
    [OP_IMPORT]        = "OP_IMPORT",
88
    [OP_SCOPE]         = "OP_SCOPE",
89
    [OP_SELECT]        = "OP_SELECT",
90
    [OP_INC_LOCAL]     = "OP_INC_LOCAL",
91
    [OP_DEC_LOCAL]     = "OP_DEC_LOCAL",
92
    [OP_ADD_INT]       = "OP_ADD_INT",
93
    [OP_SUB_INT]       = "OP_SUB_INT",
94
    [OP_MUL_INT]       = "OP_MUL_INT",
95
    [OP_LT_INT]        = "OP_LT_INT",
96
    [OP_LTEQ_INT]      = "OP_LTEQ_INT",
97
    [OP_LOAD_INT8]     = "OP_LOAD_INT8",
98
    [OP_CONSTANT_16]   = "OP_CONSTANT_16",
99
    [OP_GET_GLOBAL_16] = "OP_GET_GLOBAL_16",
100
    [OP_SET_GLOBAL_16] = "OP_SET_GLOBAL_16",
101
    [OP_DEFINE_GLOBAL_16] = "OP_DEFINE_GLOBAL_16",
102
    [OP_CLOSURE_16]    = "OP_CLOSURE_16",
103
    [OP_RESET_EPHEMERAL] = "OP_RESET_EPHEMERAL",
104
    [OP_SET_LOCAL_POP] = "OP_SET_LOCAL_POP",
105
    [OP_CHECK_TYPE]    = "OP_CHECK_TYPE",
106
    [OP_CHECK_RETURN_TYPE] = "OP_CHECK_RETURN_TYPE",
107
    [OP_IS_CRYSTAL]    = "OP_IS_CRYSTAL",
108
    [OP_FREEZE_EXCEPT] = "OP_FREEZE_EXCEPT",
109
    [OP_FREEZE_FIELD]  = "OP_FREEZE_FIELD",
110
    [OP_HALT]          = "OP_HALT",
111
};
112
113
0
const char *opcode_name(Opcode op) {
114
0
    if ((size_t)op < sizeof(names) / sizeof(names[0]) && names[op])
115
0
        return names[op];
116
0
    return "OP_UNKNOWN";
117
0
}