Lock-free memory allocator
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 10 Oct 2013 11:58:01 +0000 (11:58 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 10 Oct 2013 11:58:01 +0000 (11:58 +0000)
commit4bd40372769e9ebf078dadb0442366176e8990e6
treef2b9aef273590b809a658df2072987261e96633c
parent77a0b90cdf5d42b774f75b392aa0e3aeb7ed3452
Lock-free memory allocator

Release builds will now use lock-free allocator by
default without any internal locks happening.

MemHead is also reduces to as minimum as it's possible.
It still need to be size_t stored in a MemHead in order
to make us keep track on memory we're requesting from
the system, not memory which system is allocating. This
is probably also faster than using a malloc's usable
size function.

Lock-free guarded allocator will say you whether all
the blocks were freed, but wouldn't give you a list
of unfreed blocks list. To have such a list use a
--debug or --debug-memory command line arguments.

Debug builds does have the same behavior as release
builds. This is so tools like valgrind are not
screwed up by guarded allocator as they're currently
are.

--
svn merge -r59941:59942 -r60072:60073 -r60093:60094 \
          -r60095:60096 ^/branches/soc-2013-depsgraph_mt
13 files changed:
CMakeLists.txt
intern/guardedalloc/CMakeLists.txt
intern/guardedalloc/MEM_guardedalloc.h
intern/guardedalloc/SConscript
intern/guardedalloc/intern/mallocn.c
intern/guardedalloc/intern/mallocn_guarded_impl.c [new file with mode: 0644]
intern/guardedalloc/intern/mallocn_intern.h [new file with mode: 0644]
intern/guardedalloc/intern/mallocn_lockfree_impl.c [new file with mode: 0644]
source/blender/makesdna/intern/CMakeLists.txt
source/blender/makesdna/intern/SConscript
source/blender/makesrna/intern/CMakeLists.txt
source/blender/makesrna/intern/SConscript
source/creator/creator.c