blueloveTH 2 лет назад
Родитель
Сommit
ffde186dfa
3 измененных файлов с 5 добавлено и 4 удалено
  1. 2 2
      include/pocketpy/codeobject.h
  2. 2 1
      src/ceval.cpp
  3. 1 1
      src/expr.cpp

+ 2 - 2
include/pocketpy/codeobject.h

@@ -7,7 +7,7 @@ namespace pkpy{
 
 enum NameScope { NAME_LOCAL, NAME_GLOBAL, NAME_GLOBAL_UNKNOWN };
 
-enum Opcode {
+enum Opcode: uint8_t {
     #define OPCODE(name) OP_##name,
     #include "opcodes.h"
     #undef OPCODE
@@ -20,7 +20,7 @@ inline const char* OP_NAMES[] = {
 };
 
 struct Bytecode{
-    uint16_t op;
+    uint8_t op;
     uint16_t block;
     int arg;
 };

+ 2 - 1
src/ceval.cpp

@@ -62,7 +62,7 @@ __NEXT_STEP:;
 #if PK_DEBUG_CEVAL_STEP
     _log_s_data();
 #endif
-    switch ((uint8_t)byte.op)
+    switch (byte.op)
     {
 #endif
     TARGET(NO_OP) DISPATCH();
@@ -735,6 +735,7 @@ __NEXT_STEP:;
     } DISPATCH();
 
 #if !PK_ENABLE_COMPUTED_GOTO
+        static_assert(OP_DEC_GLOBAL == 106);
         case 107: case 108: case 109: case 110: case 111: case 112: case 113: case 114: case 115: case 116: case 117: case 118: case 119: case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: case 131: case 132: case 133: case 134: case 135: case 136: case 137: case 138: case 139: case 140: case 141: case 142: case 143: case 144: case 145: case 146: case 147: case 148: case 149: case 150: case 151: case 152: case 153: case 154: case 155: case 156: case 157: case 158: case 159: case 160: case 161: case 162: case 163: case 164: case 165: case 166: case 167: case 168: case 169: case 170: case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: case 239: case 240: case 241: case 242: case 243: case 244: case 245: case 246: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: FATAL_ERROR(); break;
     }
 #endif

+ 1 - 1
src/expr.cpp

@@ -52,7 +52,7 @@ namespace pkpy{
 
     int CodeEmitContext::emit(Opcode opcode, int arg, int line) {
         co->codes.push_back(
-            Bytecode{(uint16_t)opcode, (uint16_t)curr_block_i, arg}
+            Bytecode{(uint8_t)opcode, (uint16_t)curr_block_i, arg}
         );
         co->lines.push_back(line);
         int i = co->codes.size() - 1;