blueloveTH il y a 3 ans
Parent
commit
6791c0784a
2 fichiers modifiés avec 11 ajouts et 1 suppressions
  1. 1 1
      src/compiler.h
  2. 10 0
      src/pocketpy.h

+ 1 - 1
src/compiler.h

@@ -838,7 +838,7 @@ __LISTCOMP:
                 EXPR_TUPLE();
                 consumeEndStatement();
             }
-            emit(OP_RETURN_VALUE);
+            emit(OP_RETURN_VALUE, -1, true);
         } else if (match(TK("if"))) {
             compileIfStatement();
         } else if (match(TK("while"))) {

+ 10 - 0
src/pocketpy.h

@@ -588,6 +588,15 @@ void __addModuleMath(VM* vm){
     });
 }
 
+void __addModuleDis(VM* vm){
+    PyVar mod = vm->new_module("dis");
+    vm->bindFunc<1>(mod, "dis", [](VM* vm, const pkpy::ArgList& args) {
+        _Code code = vm->PyFunction_AS_C(args[0])->code;
+        (*vm->_stdout) << vm->disassemble(code);
+        return vm->None;
+    });
+}
+
 
 #define PY_CLASS(mod, name) inline static PyVar _tp(VM* vm) { return vm->_modules[#mod]->attribs[#name]; }
 
@@ -790,6 +799,7 @@ extern "C" {
         __addModuleJson(vm);
         __addModuleMath(vm);
         __addModuleRe(vm);
+        __addModuleDis(vm);
 
         // add builtins | no exception handler | must succeed
         _Code code = vm->compile(__BUILTINS_CODE, "<builtins>", EXEC_MODE);