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