blueloveTH 1 рік тому
батько
коміт
4d5e6c6b59
3 змінених файлів з 9 додано та 0 видалено
  1. 5 0
      include/pocketpy/objects/base.h
  2. 2 0
      src/interpreter/vm.cpp
  3. 2 0
      src/objects/base.c

+ 5 - 0
include/pocketpy/objects/base.h

@@ -15,6 +15,11 @@ extern "C" {
 typedef int16_t pkpy_Type;
 
 typedef struct PyObject PyObject;
+typedef struct pkpy_VM pkpy_VM;
+
+struct pkpy_G {
+    pkpy_VM* vm;
+} extern pkpy_g;
 
 typedef struct PyVar{
     pkpy_Type type;

+ 2 - 0
src/interpreter/vm.cpp

@@ -86,6 +86,8 @@ struct JsonSerializer {
 VM::VM(bool enable_os) : heap(this), enable_os(enable_os) {
     Pools_initialize();
     pkpy_StrName__initialize();
+    pkpy_g.vm = (pkpy_VM*)this;    // setup the current VM
+
     static ::PyObject __true_obj = {tp_bool, false, false, NULL};
     static ::PyObject __false_obj = {tp_bool, false, false, NULL};
     static ::PyObject __none_obj = {tp_none_type, false, false, NULL};

+ 2 - 0
src/objects/base.c

@@ -1,5 +1,7 @@
 #include "pocketpy/objects/base.h"
 
+struct pkpy_G pkpy_g;
+
 PyVar pkpy_NULL = {.type=0, .is_ptr=false, .extra=0, ._i64=0};
 PyVar pkpy_OP_CALL = {.type=27, .is_ptr=false, .extra=0, ._i64=0};
 PyVar pkpy_OP_YIELD = {.type=28, .is_ptr=false, .extra=0, ._i64=0};