/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 | } |