Update obj.h

This commit is contained in:
blueloveTH 2022-12-05 06:10:29 +08:00
parent 0f820d4430
commit 27a01e91d3

View File

@ -67,7 +67,9 @@ public:
typedef pkpy::shared_ptr<Function> _Func;
typedef std::variant<PyVar,_Int,_Float,bool,_Str,PyVarList,_CppFunc,_Func,pkpy::shared_ptr<_Iterator>,_BoundedMethod,_Range,_Slice,_Pointer> _Value;
const int _SIZEOF_VALUE = sizeof(_Value);
const int VALUE_SIZE = sizeof(_Value);
static std::vector<void*> _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);
}
};