blueloveTH před 1 rokem
rodič
revize
1b2fae94eb
3 změnil soubory, kde provedl 6 přidání a 4 odebrání
  1. 4 2
      include/pocketpy/vm.h
  2. 1 1
      src/ceval.cpp
  3. 1 1
      src/vm.cpp

+ 4 - 2
include/pocketpy/vm.h

@@ -287,14 +287,16 @@ public:
 
     template<typename... Args>
     PyVar call(PyVar callable, Args&&... args){
-        PUSH(callable); PUSH(PY_NULL);
+        s_data.push(callable);
+        s_data.emplace(PY_NULL);
         __push_varargs(args...);
         return vectorcall(sizeof...(args));
     }
 
     template<typename... Args>
     PyVar call_method(PyVar self, PyVar callable, Args&&... args){
-        PUSH(callable); PUSH(self);
+        s_data.push(callable);
+        s_data.push(self);
         __push_varargs(args...);
         return vectorcall(sizeof...(args));
     }

+ 1 - 1
src/ceval.cpp

@@ -173,7 +173,7 @@ __NEXT_STEP:
         }
         PUSH(obj);
     } DISPATCH()
-    case OP_LOAD_NULL: PUSH(PY_NULL); DISPATCH()
+    case OP_LOAD_NULL: s_data.emplace(PY_NULL); DISPATCH()
     /*****************************************/
     case OP_LOAD_FAST: {
         PyVar _0 = frame->_locals[byte.arg];

+ 1 - 1
src/vm.cpp

@@ -1107,7 +1107,7 @@ PyVar VM::vectorcall(int ARGC, int KWARGC, bool op_call){
             obj = vm->new_object<DummyInstance>(PK_OBJ_GET(Type, callable));
         }else{
             PUSH(new_f);
-            PUSH(PY_NULL);
+            s_data.emplace(PY_NULL);
             PUSH(callable);    // cls
             for(PyVar o: args) PUSH(o);
             for(PyVar o: kwargs) PUSH(o);