diff --git a/src/obj.h b/src/obj.h index 5bbdaf18..053b7687 100644 --- a/src/obj.h +++ b/src/obj.h @@ -67,7 +67,9 @@ public: typedef pkpy::shared_ptr _Func; typedef std::variant,_BoundedMethod,_Range,_Slice,_Pointer> _Value; -const int _SIZEOF_VALUE = sizeof(_Value); +const int VALUE_SIZE = sizeof(_Value); + +static std::vector _objPool; struct PyObject { PyVarDict attribs; @@ -95,4 +97,18 @@ struct PyObject { PyObject(const _Value& val): _native(val) {} PyObject(_Value&& val): _native(std::move(val)) {} -}; + + void* operator new(size_t size){ + if(_objPool.empty()){ + return ::operator new(size); + }else{ + void* ptr = _objPool.back(); + _objPool.pop_back(); + return ptr; + } + } + + void operator delete(void* ptr){ + _objPool.push_back(ptr); + } +}; \ No newline at end of file