some optimizations in godot memory handling
This commit is contained in:
parent
89300b70e7
commit
4e46143499
3 changed files with 14 additions and 14 deletions
|
@ -112,13 +112,6 @@ size_t Memory::get_dynamic_mem_usage() {
|
||||||
return MemoryPoolDynamic::get_singleton()->get_total_usage();
|
return MemoryPoolDynamic::get_singleton()->get_total_usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
void * operator new(size_t p_size,void *p_pointer,size_t check, const char *p_description) {
|
|
||||||
|
|
||||||
void *failptr=0;
|
|
||||||
ERR_FAIL_COND_V( check < p_size , failptr); /** bug, or strange compiler, most likely */
|
|
||||||
|
|
||||||
return p_pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -236,11 +236,11 @@ void * operator new(size_t p_size,void *p_pointer,size_t check, const char *p_de
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
_FORCE_INLINE_ void postinitialize_handler(void *) {}
|
_ALWAYS_INLINE_ void postinitialize_handler(void *) {}
|
||||||
|
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
_FORCE_INLINE_ T *_post_initialize(T *p_obj) {
|
_ALWAYS_INLINE_ T *_post_initialize(T *p_obj) {
|
||||||
|
|
||||||
postinitialize_handler(p_obj);
|
postinitialize_handler(p_obj);
|
||||||
return p_obj;
|
return p_obj;
|
||||||
|
@ -249,19 +249,26 @@ _FORCE_INLINE_ T *_post_initialize(T *p_obj) {
|
||||||
#ifdef DEBUG_MEMORY_ENABLED
|
#ifdef DEBUG_MEMORY_ENABLED
|
||||||
|
|
||||||
#define memnew(m_class) _post_initialize(new(__FILE__":"__STR(__LINE__)", memnew type: "__STR(m_class)) m_class)
|
#define memnew(m_class) _post_initialize(new(__FILE__":"__STR(__LINE__)", memnew type: "__STR(m_class)) m_class)
|
||||||
#define memnew_placement(m_placement,m_class) _post_initialize(new(m_placement,sizeof(m_class),__FILE__":"__STR(__LINE__)", type: "__STR(m_class)) m_class)
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define memnew(m_class) _post_initialize(new("") m_class)
|
#define memnew(m_class) _post_initialize(new("") m_class)
|
||||||
#define memnew_placement(m_placement,m_class) _post_initialize(new(m_placement,sizeof(m_class),"") m_class)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
_ALWAYS_INLINE_ void * operator new(size_t p_size,void *p_pointer,size_t check, const char *p_description) {
|
||||||
|
// void *failptr=0;
|
||||||
|
// ERR_FAIL_COND_V( check < p_size , failptr); /** bug, or strange compiler, most likely */
|
||||||
|
|
||||||
|
return p_pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define memnew_allocator(m_class,m_allocator) _post_initialize(new(m_allocator::alloc) m_class)
|
#define memnew_allocator(m_class,m_allocator) _post_initialize(new(m_allocator::alloc) m_class)
|
||||||
|
#define memnew_placement(m_placement,m_class) _post_initialize(new(m_placement,sizeof(m_class),"") m_class)
|
||||||
|
|
||||||
|
|
||||||
_FORCE_INLINE_ bool predelete_handler(void *) { return true; }
|
_ALWAYS_INLINE_ bool predelete_handler(void *) { return true; }
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
void memdelete(T *p_class) {
|
void memdelete(T *p_class) {
|
||||||
|
|
|
@ -111,9 +111,9 @@ def configure(env):
|
||||||
if (env["target"]=="release"):
|
if (env["target"]=="release"):
|
||||||
|
|
||||||
if (env["debug_release"]=="yes"):
|
if (env["debug_release"]=="yes"):
|
||||||
env.Append(CCFLAGS=['-g2','-fomit-frame-pointer'])
|
env.Append(CCFLAGS=['-g2'])
|
||||||
else:
|
else:
|
||||||
env.Append(CCFLAGS=['-O2','-ffast-math','-fomit-frame-pointer'])
|
env.Append(CCFLAGS=['-O3','-ffast-math'])
|
||||||
|
|
||||||
elif (env["target"]=="release_debug"):
|
elif (env["target"]=="release_debug"):
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue