mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
Update obj.h
This commit is contained in:
parent
0f820d4430
commit
27a01e91d3
20
src/obj.h
20
src/obj.h
@ -67,7 +67,9 @@ public:
|
|||||||
typedef pkpy::shared_ptr<Function> _Func;
|
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;
|
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 {
|
struct PyObject {
|
||||||
PyVarDict attribs;
|
PyVarDict attribs;
|
||||||
@ -95,4 +97,18 @@ struct PyObject {
|
|||||||
|
|
||||||
PyObject(const _Value& val): _native(val) {}
|
PyObject(const _Value& val): _native(val) {}
|
||||||
PyObject(_Value&& val): _native(std::move(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