mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 03:16:17 +01:00
Merge branch 'wip/alloc-memset-inlining' into 'master'
gslice: Allow inlining of memset() in g_slice_new0() macro Closes #5 See merge request GNOME/glib!1597
This commit is contained in:
commit
d31c771185
@ -23,6 +23,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <glib/gtypes.h>
|
#include <glib/gtypes.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@ -43,7 +44,22 @@ void g_slice_free_chain_with_offset (gsize block_size,
|
|||||||
gpointer mem_chain,
|
gpointer mem_chain,
|
||||||
gsize next_offset);
|
gsize next_offset);
|
||||||
#define g_slice_new(type) ((type*) g_slice_alloc (sizeof (type)))
|
#define g_slice_new(type) ((type*) g_slice_alloc (sizeof (type)))
|
||||||
#define g_slice_new0(type) ((type*) g_slice_alloc0 (sizeof (type)))
|
|
||||||
|
/* Allow the compiler to inline memset(). Since the size is a constant, this
|
||||||
|
* can significantly improve performance. */
|
||||||
|
#if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__)
|
||||||
|
# define g_slice_new0(type) \
|
||||||
|
(type *) (G_GNUC_EXTENSION ({ \
|
||||||
|
gsize __s = sizeof (type); \
|
||||||
|
gpointer __p; \
|
||||||
|
__p = g_slice_alloc (__s); \
|
||||||
|
memset (__p, 0, __s); \
|
||||||
|
__p; \
|
||||||
|
}))
|
||||||
|
#else
|
||||||
|
# define g_slice_new0(type) ((type*) g_slice_alloc0 (sizeof (type)))
|
||||||
|
#endif
|
||||||
|
|
||||||
/* MemoryBlockType *
|
/* MemoryBlockType *
|
||||||
* g_slice_dup (MemoryBlockType,
|
* g_slice_dup (MemoryBlockType,
|
||||||
* MemoryBlockType *mem_block);
|
* MemoryBlockType *mem_block);
|
||||||
|
Loading…
Reference in New Issue
Block a user