#include "eina_error.h"
#include "eina_list.h"
+#include "eina_mempool.h"
#include "eina_private.h"
/*============================================================================*
};
static int _eina_list_init_count = 0;
+static Eina_Mempool *_eina_list_mp = NULL;
+static Eina_Mempool *_eina_list_accounting_mp = NULL;
static inline Eina_List_Accounting*
_eina_list_mempool_accounting_new(__UNUSED__ Eina_List *list)
{
Eina_List_Accounting *tmp;
- tmp = malloc(sizeof (Eina_List_Accounting));
- if (!tmp) eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+ tmp = eina_mempool_alloc(_eina_list_accounting_mp, sizeof (Eina_List_Accounting));
+ if (!tmp) return NULL;
EINA_MAGIC_SET(tmp, EINA_MAGIC_LIST_ACCOUNTING);
{
EINA_MAGIC_CHECK_LIST_ACCOUNTING(accounting);
- MAGIC_FREE(accounting);
+ EINA_MAGIC_SET(accounting, EINA_MAGIC_NONE);
+ eina_mempool_free(_eina_list_accounting_mp, accounting);
}
static inline Eina_List*
{
Eina_List *tmp;
- tmp = malloc(sizeof (Eina_List));
- if (!tmp) eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
+ tmp = eina_mempool_alloc(_eina_list_mp, sizeof (Eina_List));
+ if (!tmp) return NULL;
EINA_MAGIC_SET(tmp, EINA_MAGIC_LIST);
if (list->accounting->count == 0)
_eina_list_mempool_accounting_free(list->accounting);
- MAGIC_FREE(list);
+ EINA_MAGIC_SET(list, EINA_MAGIC_NONE);
+ eina_mempool_free(_eina_list_mp, list);
}
static Eina_List *
{
eina_error_init();
eina_magic_string_init();
+ eina_mempool_init();
+
+ _eina_list_mp = eina_mempool_new("chained_mempool", "list", NULL,
+ sizeof (Eina_List), 320);
+ _eina_list_accounting_mp = eina_mempool_new("chained_mempool", "list_accounting", NULL,
+ sizeof (Eina_List_Accounting), 80);
eina_magic_string_set(EINA_MAGIC_ITERATOR,
"Eina Iterator");
if (!_eina_list_init_count)
{
- eina_magic_string_shutdown();
- eina_error_shutdown();
+ eina_mempool_delete(_eina_list_accounting_mp);
+ eina_mempool_delete(_eina_list_mp);
+
+ eina_mempool_shutdown();
+ eina_magic_string_shutdown();
+ eina_error_shutdown();
}
return _eina_list_init_count;