mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
Update obj.h
This commit is contained in:
parent
0f820d4430
commit
27a01e91d3
18
src/obj.h
18
src/obj.h
@ -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);
|
||||
}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user