From a187e5bcdb5cc873892a1024d55ebd41e15084e8 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Tue, 4 Apr 2023 22:55:57 +0800 Subject: [PATCH] up --- src/codeobject.h | 1 + src/obj.h | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/codeobject.h b/src/codeobject.h index 1795f2c5..c390aaf3 100644 --- a/src/codeobject.h +++ b/src/codeobject.h @@ -60,6 +60,7 @@ struct CodeObject { std::set global_names; std::vector blocks = { CodeBlock{NO_BLOCK, -1} }; std::map labels; + std::vector functions; // may be.. just use a large NameDict? uint32_t perfect_locals_capacity = 2; diff --git a/src/obj.h b/src/obj.h index e6f6c180..7d64a098 100644 --- a/src/obj.h +++ b/src/obj.h @@ -24,7 +24,7 @@ struct NativeFunc { PyObject* operator()(VM* vm, Args& args) const; }; -struct Function { +struct FunctionDecl { StrName name; CodeObject_ code; std::vector args; @@ -32,10 +32,6 @@ struct Function { NameDict kwargs; // empty if no k=v std::vector kwargs_order; - // runtime settings - PyObject* _module = nullptr; - NameDict_ _closure = nullptr; - bool has_name(StrName val) const { bool _0 = std::find(args.begin(), args.end(), val) != args.end(); bool _1 = starred_arg == val; @@ -44,6 +40,12 @@ struct Function { } }; +struct Function{ + const FunctionDecl* decl; + PyObject* _module = nullptr; + NameDict_ _closure = nullptr; +}; + struct BoundMethod { PyObject* obj; PyObject* method;