From c2a9b77a1884670cf28791dbd65b5f23691474a3 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sat, 15 Apr 2023 10:31:59 +0800 Subject: [PATCH] up _0 --- src/iter.h | 3 ++- src/obj.h | 4 ++-- src/tuplelist.h | 19 ++++++++++++------- src/vm.h | 3 ++- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/iter.h b/src/iter.h index f85a05ea..f2348366 100644 --- a/src/iter.h +++ b/src/iter.h @@ -69,7 +69,8 @@ inline PyObject* Generator::next(){ frame = std::move(vm->callstack.top()); vm->callstack.pop(); state = 1; - return frame.popx(); + PyObject** _sp = frame._sp; + return POPX(); }else{ state = 2; return nullptr; diff --git a/src/obj.h b/src/obj.h index 0263cbcb..74ba417e 100644 --- a/src/obj.h +++ b/src/obj.h @@ -139,11 +139,11 @@ struct Py_ final: PyObject { }; #define OBJ_GET(T, obj) (((Py_*)(obj))->_value) -#define OBJ_MARK(obj) if(!is_tagged(obj)) obj->_obj_gc_mark() +#define OBJ_MARK(obj) if(!is_tagged(obj)) (obj)->_obj_gc_mark() Str obj_type_name(VM* vm, Type type); -#if DEBUG_NO_BUILTIN_MODULES +#if DEBUG_NO_BUILTIN_MODULES || DEBUG_NO_NAME_GETTER #define OBJ_NAME(obj) Str("") #else #define OBJ_NAME(obj) OBJ_GET(Str, vm->getattr(obj, __name__)) diff --git a/src/tuplelist.h b/src/tuplelist.h index dc1ad3c6..80779d7f 100644 --- a/src/tuplelist.h +++ b/src/tuplelist.h @@ -60,13 +60,6 @@ public: PyObject** begin() const { return _args; } PyObject** end() const { return _args + _size; } - List to_list() noexcept { - List ret(_size); - // TODO: use move/memcpy - for(int i=0; i<_size; i++) ret[i] = _args[i]; - return ret; - } - void extend_self(PyObject* self){ PyObject** old_args = _args; int old_size = _size; @@ -99,6 +92,18 @@ struct ArgsView{ int size() const { return _end - _begin; } bool empty() const { return _begin == _end; } PyObject* operator[](int i) const { return _begin[i]; } + + List to_list() const{ + List ret(size()); + for(int i=0; ipush(VAR(e)); + PyObject** _sp = top_frame()->_sp; + PUSH(VAR(e)); _raise(); }