From 4d5e6c6b59922bbf3b94c88723f3332266b59bfb Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sun, 16 Jun 2024 22:04:47 +0800 Subject: [PATCH] global setup --- include/pocketpy/objects/base.h | 5 +++++ src/interpreter/vm.cpp | 2 ++ src/objects/base.c | 2 ++ 3 files changed, 9 insertions(+) diff --git a/include/pocketpy/objects/base.h b/include/pocketpy/objects/base.h index 0ac42777..7c6607f1 100644 --- a/include/pocketpy/objects/base.h +++ b/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; diff --git a/src/interpreter/vm.cpp b/src/interpreter/vm.cpp index 28a1e486..3cc27726 100644 --- a/src/interpreter/vm.cpp +++ b/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}; diff --git a/src/objects/base.c b/src/objects/base.c index b2bc166e..a528d960 100644 --- a/src/objects/base.c +++ b/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};