blueloveTH 3 years ago
parent
commit
78922a11b1
3 changed files with 14 additions and 10 deletions
  1. 5 0
      src/codeobject.h
  2. 8 9
      src/opcodes.h
  3. 1 1
      src/vm.h

+ 5 - 0
src/codeobject.h

@@ -208,6 +208,11 @@ public:
         return v;
     }
 
+    inline void __pop(){
+        if(s_data.empty()) throw std::runtime_error("s_data.empty() is true");
+        s_data.pop_back();
+    }
+
     inline void try_deref(VM*, PyVar&);
 
     inline PyVar pop_value(VM* vm){

+ 8 - 9
src/opcodes.h

@@ -1,8 +1,6 @@
 #ifdef OPCODE
 
 OPCODE(NO_OP)
-OPCODE(IMPORT_NAME)
-OPCODE(PRINT_EXPR)
 OPCODE(POP_TOP)
 OPCODE(DUP_TOP)
 OPCODE(CALL)
@@ -21,8 +19,13 @@ OPCODE(BUILD_LIST)
 OPCODE(BUILD_MAP)
 OPCODE(BUILD_SET)
 OPCODE(BUILD_SLICE)
+OPCODE(BUILD_CLASS)
+OPCODE(BUILD_SMART_TUPLE)
+OPCODE(BUILD_STRING)
 
 OPCODE(LIST_APPEND)
+OPCODE(IMPORT_NAME)
+OPCODE(PRINT_EXPR)
 
 OPCODE(GET_ITER)
 OPCODE(FOR_ITER)
@@ -38,6 +41,8 @@ OPCODE(SAFE_JUMP_ABSOLUTE)
 OPCODE(JUMP_IF_TRUE_OR_POP)
 OPCODE(JUMP_IF_FALSE_OR_POP)
 
+OPCODE(GOTO)
+
 OPCODE(LOAD_CONST)
 OPCODE(LOAD_NONE)
 OPCODE(LOAD_TRUE)
@@ -51,17 +56,11 @@ OPCODE(LOAD_NAME_REF)
 OPCODE(ASSERT)
 OPCODE(RAISE_ERROR)
 
-OPCODE(BUILD_CLASS)
+OPCODE(BUILD_INDEX_REF)
 OPCODE(BUILD_ATTR_REF)
 OPCODE(STORE_NAME)
 OPCODE(STORE_FUNCTION)
-OPCODE(BUILD_INDEX_REF)
 OPCODE(STORE_REF)
 OPCODE(DELETE_REF)
 
-OPCODE(BUILD_SMART_TUPLE)
-OPCODE(BUILD_STRING)
-
-OPCODE(GOTO)
-
 #endif

+ 1 - 1
src/vm.h

@@ -130,7 +130,7 @@ protected:
                     if(expr == None) break;
                     *_stdout << PyStr_AS_C(asRepr(expr)) << '\n';
                 } break;
-            case OP_POP_TOP: frame->pop(); break;
+            case OP_POP_TOP: frame->__pop(); break;
             case OP_BINARY_OP:
                 {
                     pkpy::ArgList args(2);