On Fri, 2 Dec 2011, Enlightenment SVN wrote:

> Log:
> mempools++

i'm curious: do you have some numbers about the improvements that 
allocators provide ?

Vincent

>
>
> Author:       discomfitor
> Date:         2011-12-02 19:39:07 -0800 (Fri, 02 Dec 2011)
> New Revision: 65833
> Trac:         http://trac.enlightenment.org/e/changeset/65833
>
> Added:
>  trunk/ecore/src/lib/ecore/ecore_alloc.c 
> trunk/ecore/src/lib/ecore/ecore_types.h
> Modified:
>  trunk/ecore/ChangeLog trunk/ecore/NEWS trunk/ecore/src/lib/ecore/Makefile.am 
> trunk/ecore/src/lib/ecore/ecore.c trunk/ecore/src/lib/ecore/ecore_anim.c 
> trunk/ecore/src/lib/ecore/ecore_events.c 
> trunk/ecore/src/lib/ecore/ecore_idle_enterer.c 
> trunk/ecore/src/lib/ecore/ecore_idle_exiter.c 
> trunk/ecore/src/lib/ecore/ecore_idler.c trunk/ecore/src/lib/ecore/ecore_job.c 
> trunk/ecore/src/lib/ecore/ecore_main.c trunk/ecore/src/lib/ecore/ecore_pipe.c 
> trunk/ecore/src/lib/ecore/ecore_poll.c 
> trunk/ecore/src/lib/ecore/ecore_private.h 
> trunk/ecore/src/lib/ecore/ecore_timer.c
>
> Modified: trunk/ecore/ChangeLog
> ===================================================================
> --- trunk/ecore/ChangeLog     2011-12-02 22:50:00 UTC (rev 65832)
> +++ trunk/ecore/ChangeLog     2011-12-03 03:39:07 UTC (rev 65833)
> @@ -360,3 +360,7 @@
> 2011-11-29 Mike McCormack
>
>       * Allow quitting before entering the glib version of the main loop
> +
> +2011-12-02 Mike Blumenkrantz
> +
> +        * Use mempools for allocations
>
> Modified: trunk/ecore/NEWS
> ===================================================================
> --- trunk/ecore/NEWS  2011-12-02 22:50:00 UTC (rev 65832)
> +++ trunk/ecore/NEWS  2011-12-03 03:39:07 UTC (rev 65833)
> @@ -1,3 +1,13 @@
> +Ecore 1.2.0
> +
> +Changes since Ecore 1.1.0:
> +--------------------------
> +
> +Improvements:
> +    * ecore:
> +     - most allocations moved to mempools
> +
> +
> Ecore 1.1.0
>
> Changes since Ecore 1.0.0:
>
> Modified: trunk/ecore/src/lib/ecore/Makefile.am
> ===================================================================
> --- trunk/ecore/src/lib/ecore/Makefile.am     2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/Makefile.am     2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -11,6 +11,7 @@
>
> libecore_la_SOURCES = \
> ecore.c \
> +ecore_alloc.c \
> ecore_anim.c \
> ecore_app.c \
> ecore_events.c \
>
> Modified: trunk/ecore/src/lib/ecore/ecore.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore.c 2011-12-02 22:50:00 UTC (rev 65832)
> +++ trunk/ecore/src/lib/ecore/ecore.c 2011-12-03 03:39:07 UTC (rev 65833)
> @@ -159,6 +159,7 @@
>      }
>    if (getenv("ECORE_FPS_DEBUG")) _ecore_fps_debug = 1;
>    if (_ecore_fps_debug) _ecore_fps_debug_init();
> +   if (!ecore_mempool_init()) goto shutdown_mempool;
>    _ecore_main_loop_init();
>    _ecore_signal_init();
>    _ecore_thread_init();
> @@ -191,6 +192,8 @@
>
>    return _ecore_init_count;
>
> +shutdown_mempool:
> +   ecore_mempool_shutdown();
> shutdown_log_dom:
>    eina_shutdown();
> shutdown_evil:
> @@ -255,7 +258,7 @@
>               _ecore_memory_max_free);
>        }
> #endif
> -
> +     ecore_mempool_shutdown();
>      eina_log_domain_unregister(_ecore_log_dom);
>      _ecore_log_dom = -1;
>      eina_shutdown();
>
> Modified: trunk/ecore/src/lib/ecore/ecore_anim.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_anim.c    2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_anim.c    2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -8,22 +8,6 @@
> #include "Ecore.h"
> #include "ecore_private.h"
>
> -struct _Ecore_Animator
> -{
> -   EINA_INLIST;
> -                     ECORE_MAGIC;
> -
> -   Ecore_Task_Cb     func;
> -   void             *data;
> -
> -   double            start, run;
> -   Ecore_Timeline_Cb run_func;
> -   void             *run_data;
> -
> -   Eina_Bool         delete_me : 1;
> -   Eina_Bool         suspended : 1;
> -};
> -
> static Eina_Bool _ecore_animator_run(void *data);
> static Eina_Bool _ecore_animator(void *data);
>
> @@ -121,7 +105,7 @@
>                     eina_inlist_remove(EINA_INLIST_GET(animators),
>                                        EINA_INLIST_GET(animator));
>                   ECORE_MAGIC_SET(animator, ECORE_MAGIC_NONE);
> -                  free(animator);
> +                  ecore_animator_mp_free(animator);
>                   animators_delete_me--;
>                   if (animators_delete_me == 0) break;
>                }
> @@ -142,7 +126,7 @@
>    Ecore_Animator *animator = NULL;
>
>    if (!func) return animator;
> -   animator = calloc(1, sizeof(Ecore_Animator));
> +   animator = ecore_animator_calloc(1);
>    if (!animator) return animator;
>    ECORE_MAGIC_SET(animator, ECORE_MAGIC_ANIMATOR);
>    animator->func = func;
> @@ -443,7 +427,7 @@
>         animator = animators;
>         animators = (Ecore_Animator 
> *)eina_inlist_remove(EINA_INLIST_GET(animators), EINA_INLIST_GET(animators));
>         ECORE_MAGIC_SET(animator, ECORE_MAGIC_NONE);
> -        free(animator);
> +        ecore_animator_mp_free(animator);
>      }
> }
>
>
> Modified: trunk/ecore/src/lib/ecore/ecore_events.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_events.c  2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_events.c  2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -9,42 +9,6 @@
>
> static int inpurge = 0;
>
> -struct _Ecore_Event_Handler
> -{
> -   EINA_INLIST;
> -                          ECORE_MAGIC;
> -   int                    type;
> -   Ecore_Event_Handler_Cb func;
> -   void                  *data;
> -   int                    references;
> -   Eina_Bool              delete_me : 1;
> -};
> -
> -struct _Ecore_Event_Filter
> -{
> -   EINA_INLIST;
> -                   ECORE_MAGIC;
> -   Ecore_Data_Cb   func_start;
> -   Ecore_Filter_Cb func_filter;
> -   Ecore_End_Cb    func_end;
> -   void           *loop_data;
> -   void           *data;
> -   int             references;
> -   Eina_Bool       delete_me : 1;
> -};
> -
> -struct _Ecore_Event
> -{
> -   EINA_INLIST;
> -                ECORE_MAGIC;
> -   int          type;
> -   void        *event;
> -   Ecore_End_Cb func_free;
> -   void        *data;
> -   int          references;
> -   Eina_Bool    delete_me : 1;
> -};
> -
> static int events_num = 0;
> static Ecore_Event *events = NULL;
> static Ecore_Event *event_current = NULL;
> @@ -109,7 +73,7 @@
>
>    if (!func) goto unlock;
>    if ((type <= ECORE_EVENT_NONE) || (type >= event_id_max)) goto unlock;
> -   eh = calloc(1, sizeof(Ecore_Event_Handler));
> +   eh = ecore_event_handler_calloc(1);
>    if (!eh) goto unlock;
>    ECORE_MAGIC_SET(eh, ECORE_MAGIC_EVENT_HANDLER);
>    eh->type = type;
> @@ -130,7 +94,7 @@
>              new_handlers = realloc(event_handlers, event_handlers_alloc_num 
> * sizeof(Ecore_Event_Handler *));
>              if (!new_handlers)
>                {
> -                  free(eh);
> +                  ecore_event_handler_mp_free(eh);
>                   goto unlock;
>                }
>              event_handlers = new_handlers;
> @@ -234,7 +198,7 @@
> static void
> _ecore_event_generic_free(void *data __UNUSED__,
>                           void *event)
> -{
> +{ /* DO NOT MEMPOOL FREE THIS */
>    free (event);
> }
>
> @@ -358,7 +322,7 @@
>
>    _ecore_lock();
>    if (!func_filter) goto unlock;
> -   ef = calloc(1, sizeof(Ecore_Event_Filter));
> +   ef = ecore_event_filter_calloc(1);
>    if (!ef) goto unlock;
>    ECORE_MAGIC_SET(ef, ECORE_MAGIC_EVENT_FILTER);
>    ef->func_start = func_start;
> @@ -469,11 +433,11 @@
>           {
>              event_handlers[i] = (Ecore_Event_Handler 
> *)eina_inlist_remove(EINA_INLIST_GET(event_handlers[i]), 
> EINA_INLIST_GET(event_handlers[i]));
>              ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE);
> -             if (!eh->delete_me) free(eh);
> +             if (!eh->delete_me) ecore_event_handler_mp_free(eh);
>           }
>      }
>    EINA_LIST_FREE(event_handlers_delete_list, eh)
> -     free(eh);
> +     ecore_event_handler_mp_free(eh);
>    if (event_handlers) free(event_handlers);
>    event_handlers = NULL;
>    event_handlers_num = 0;
> @@ -482,7 +446,7 @@
>      {
>         event_filters = (Ecore_Event_Filter 
> *)eina_inlist_remove(EINA_INLIST_GET(event_filters), 
> EINA_INLIST_GET(event_filters));
>         ECORE_MAGIC_SET(ef, ECORE_MAGIC_NONE);
> -        free(ef);
> +        ecore_event_filter_mp_free(ef);
>      }
>    event_filters_delete_me = 0;
>    event_filter_current = NULL;
> @@ -506,7 +470,7 @@
> {
>    Ecore_Event *e;
>
> -   e = calloc(1, sizeof(Ecore_Event));
> +   e = ecore_event_calloc(1);
>    if (!e) return NULL;
>    ECORE_MAGIC_SET(e, ECORE_MAGIC_EVENT);
>    e->type = type;
> @@ -535,7 +499,7 @@
>    if (event->func_free) _ecore_call_end_cb(event->func_free, event->data, 
> event->event);
>    events = (Ecore_Event *)eina_inlist_remove(EINA_INLIST_GET(events), 
> EINA_INLIST_GET(event));
>    ECORE_MAGIC_SET(event, ECORE_MAGIC_NONE);
> -   free(event);
> +   ecore_event_mp_free(event);
>    events_num--;
>    return data;
> }
> @@ -638,7 +602,7 @@
>
>                   event_filters = (Ecore_Event_Filter 
> *)eina_inlist_remove(EINA_INLIST_GET(event_filters), EINA_INLIST_GET(ef));
>                   ECORE_MAGIC_SET(ef, ECORE_MAGIC_NONE);
> -                  free(ef);
> +                  ecore_event_filter_mp_free(ef);
>                }
>           }
>         if (!deleted_in_use)
> @@ -742,7 +706,7 @@
>
>         event_handlers[eh->type] = (Ecore_Event_Handler 
> *)eina_inlist_remove(EINA_INLIST_GET(event_handlers[eh->type]), 
> EINA_INLIST_GET(eh));
>         ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE);
> -        free(eh);
> +        ecore_event_handler_mp_free(eh);
>      }
> }
>
>
> Modified: trunk/ecore/src/lib/ecore/ecore_idle_enterer.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_idle_enterer.c    2011-12-02 22:50:00 UTC 
> (rev 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_idle_enterer.c    2011-12-03 03:39:07 UTC 
> (rev 65833)
> @@ -7,16 +7,6 @@
> #include "Ecore.h"
> #include "ecore_private.h"
>
> -struct _Ecore_Idle_Enterer
> -{
> -   EINA_INLIST;
> -                 ECORE_MAGIC;
> -   Ecore_Task_Cb func;
> -   void         *data;
> -   int           references;
> -   Eina_Bool     delete_me : 1;
> -};
> -
> static Ecore_Idle_Enterer *idle_enterers = NULL;
> static Ecore_Idle_Enterer *idle_enterer_current = NULL;
> static int idle_enterers_delete_me = 0;
> @@ -49,7 +39,7 @@
>    _ecore_lock();
>
>    if (!func) goto unlock;
> -   ie = calloc(1, sizeof(Ecore_Idle_Enterer));
> +   ie = ecore_idle_enterer_calloc(1);
>    if (!ie) goto unlock;
>    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_ENTERER);
>    ie->func = func;
> @@ -79,7 +69,7 @@
>    _ecore_lock();
>
>    if (!func) goto unlock;
> -   ie = calloc(1, sizeof(Ecore_Idle_Enterer));
> +   ie = ecore_idle_enterer_calloc(1);
>    if (!ie) goto unlock;
>    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_ENTERER);
>    ie->func = func;
> @@ -134,7 +124,7 @@
>      {
>         idle_enterers = (Ecore_Idle_Enterer 
> *)eina_inlist_remove(EINA_INLIST_GET(idle_enterers), 
> EINA_INLIST_GET(idle_enterers));
>         ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
> -        free(ie);
> +        ecore_idle_enterer_mp_free(ie);
>      }
>    idle_enterers_delete_me = 0;
>    idle_enterer_current = NULL;
> @@ -190,7 +180,7 @@
>
>                   idle_enterers = (Ecore_Idle_Enterer 
> *)eina_inlist_remove(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(ie));
>                   ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
> -                  free(ie);
> +                  ecore_idle_enterer_mp_free(ie);
>                }
>           }
>         if (!deleted_idler_enterers_in_use)
>
> Modified: trunk/ecore/src/lib/ecore/ecore_idle_exiter.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_idle_exiter.c     2011-12-02 22:50:00 UTC 
> (rev 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_idle_exiter.c     2011-12-03 03:39:07 UTC 
> (rev 65833)
> @@ -7,16 +7,6 @@
> #include "Ecore.h"
> #include "ecore_private.h"
>
> -struct _Ecore_Idle_Exiter
> -{
> -   EINA_INLIST;
> -                 ECORE_MAGIC;
> -   Ecore_Task_Cb func;
> -   void         *data;
> -   int           references;
> -   Eina_Bool     delete_me : 1;
> -};
> -
> static Ecore_Idle_Exiter *idle_exiters = NULL;
> static Ecore_Idle_Exiter *idle_exiter_current = NULL;
> static int idle_exiters_delete_me = 0;
> @@ -47,7 +37,7 @@
>
>    _ecore_lock();
>    if (!func) goto unlock;
> -   ie = calloc(1, sizeof(Ecore_Idle_Exiter));
> +   ie = ecore_idle_exiter_calloc(1);
>    if (!ie) goto unlock;
>    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_EXITER);
>    ie->func = func;
> @@ -102,7 +92,7 @@
>      {
>         idle_exiters = (Ecore_Idle_Exiter 
> *)eina_inlist_remove(EINA_INLIST_GET(idle_exiters), 
> EINA_INLIST_GET(idle_exiters));
>         ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
> -        free(ie);
> +        ecore_idle_exiter_mp_free(ie);
>      }
>    idle_exiters_delete_me = 0;
>    idle_exiter_current = NULL;
> @@ -159,7 +149,7 @@
>
>                   idle_exiters = (Ecore_Idle_Exiter 
> *)eina_inlist_remove(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(ie));
>                   ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
> -                  free(ie);
> +                  ecore_idle_exiter_mp_free(ie);
>                }
>           }
>         if (!deleted_idler_exiters_in_use)
>
> Modified: trunk/ecore/src/lib/ecore/ecore_idler.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_idler.c   2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_idler.c   2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -7,16 +7,6 @@
> #include "Ecore.h"
> #include "ecore_private.h"
>
> -struct _Ecore_Idler
> -{
> -   EINA_INLIST;
> -                 ECORE_MAGIC;
> -   Ecore_Task_Cb func;
> -   void         *data;
> -   int           references;
> -   Eina_Bool     delete_me : 1;
> -};
> -
> static Ecore_Idler *idlers = NULL;
> static Ecore_Idler *idler_current = NULL;
> static int idlers_delete_me = 0;
> @@ -32,7 +22,7 @@
>
>    _ecore_lock();
>    if (!func) goto unlock;
> -   ie = calloc(1, sizeof(Ecore_Idler));
> +   ie = ecore_idler_calloc(1);
>    if (!ie) goto unlock;
>    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLER);
>    ie->func = func;
> @@ -86,7 +76,7 @@
>      {
>         idlers = (Ecore_Idler *)eina_inlist_remove(EINA_INLIST_GET(idlers), 
> EINA_INLIST_GET(idlers));
>         ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
> -        free(ie);
> +        ecore_idler_mp_free(ie);
>      }
>    idlers_delete_me = 0;
>    idler_current = NULL;
> @@ -139,7 +129,7 @@
>
>                   idlers = (Ecore_Idler 
> *)eina_inlist_remove(EINA_INLIST_GET(idlers), EINA_INLIST_GET(ie));
>                   ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
> -                  free(ie);
> +                  ecore_idler_mp_free(ie);
>                }
>           }
>         if (!deleted_idlers_in_use)
>
> Modified: trunk/ecore/src/lib/ecore/ecore_job.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_job.c     2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_job.c     2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -16,14 +16,6 @@
> static int ecore_event_job_type = 0;
> static Ecore_Event_Handler *_ecore_job_handler = NULL;
>
> -struct _Ecore_Job
> -{
> -                ECORE_MAGIC;
> -   Ecore_Event *event;
> -   Ecore_Cb     func;
> -   void        *data;
> -};
> -
> void
> _ecore_job_init(void)
> {
> @@ -61,13 +53,13 @@
>
>    if (!func) return NULL;
>
> -   job = calloc(1, sizeof(Ecore_Job));
> +   job = ecore_job_calloc(1);
>    if (!job) return NULL;
>    ECORE_MAGIC_SET(job, ECORE_MAGIC_JOB);
>    job->event = ecore_event_add(ecore_event_job_type, job, 
> _ecore_job_event_free, NULL);
>    if (!job->event)
>      {
> -        free(job);
> +        ecore_job_mp_free(job);
>         return NULL;
>      }
>    job->func = func;
> @@ -115,8 +107,8 @@
>
> static void
> _ecore_job_event_free(void *data __UNUSED__,
> -                      void *ev)
> +                      void *job)
> {
> -   free(ev);
> +   ecore_job_mp_free(job);
> }
>
>
> Modified: trunk/ecore/src/lib/ecore/ecore_main.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_main.c    2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_main.c    2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -145,42 +145,6 @@
>
> #define NS_PER_SEC (1000.0 * 1000.0 * 1000.0)
>
> -struct _Ecore_Fd_Handler
> -{
> -   EINA_INLIST;
> -                          ECORE_MAGIC;
> -   Ecore_Fd_Handler      *next_ready;
> -   int                    fd;
> -   Ecore_Fd_Handler_Flags flags;
> -   Ecore_Fd_Cb            func;
> -   void                  *data;
> -   Ecore_Fd_Cb            buf_func;
> -   void                  *buf_data;
> -   Ecore_Fd_Prep_Cb       prep_func;
> -   void                  *prep_data;
> -   int                    references;
> -   Eina_Bool              read_active : 1;
> -   Eina_Bool              write_active : 1;
> -   Eina_Bool              error_active : 1;
> -   Eina_Bool              delete_me : 1;
> -#if defined(USE_G_MAIN_LOOP)
> -   GPollFD                gfd;
> -#endif
> -};
> -
> -#ifdef _WIN32
> -struct _Ecore_Win32_Handler
> -{
> -   EINA_INLIST;
> -                         ECORE_MAGIC;
> -   HANDLE                h;
> -   Ecore_Win32_Handle_Cb func;
> -   void                 *data;
> -   int                   references;
> -   Eina_Bool             delete_me : 1;
> -};
> -#endif
> -
> #ifndef USE_G_MAIN_LOOP
> static int  _ecore_main_select(double timeout);
> #endif
> @@ -990,7 +954,7 @@
>
>    if ((fd < 0) || (flags == 0) || (!func)) goto unlock;
>
> -   fdh = calloc(1, sizeof(Ecore_Fd_Handler));
> +   fdh = ecore_fd_handler_calloc(1);
>    if (!fdh) goto unlock;
>    ECORE_MAGIC_SET(fdh, ECORE_MAGIC_FD_HANDLER);
>    fdh->next_ready = NULL;
> @@ -1000,7 +964,7 @@
>      {
>         int err = errno;
>         ERR("Failed to add poll on fd %d (errno = %d: %s)!", fd, err, 
> strerror(err));
> -        free(fdh);
> +        ecore_fd_handler_mp_free(fdh);
>         fdh = NULL;
>         goto unlock;
>      }
> @@ -1033,7 +997,7 @@
>
>    if (!h || !func) return NULL;
>
> -   wh = calloc(1, sizeof(Ecore_Win32_Handler));
> +   wh = ecore_win32_handler_calloc(1);
>    if (!wh) return NULL;
>    ECORE_MAGIC_SET(wh, ECORE_MAGIC_WIN32_HANDLER);
>    wh->h = (HANDLE)h;
> @@ -1263,7 +1227,7 @@
>         fd_handlers = (Ecore_Fd_Handler 
> *)eina_inlist_remove(EINA_INLIST_GET(fd_handlers),
>                                                              
> EINA_INLIST_GET(fdh));
>         ECORE_MAGIC_SET(fdh, ECORE_MAGIC_NONE);
> -        free(fdh);
> +        ecore_fd_handler_mp_free(fdh);
>      }
>    if (fd_handlers_with_buffer)
>      fd_handlers_with_buffer = eina_list_free(fd_handlers_with_buffer);
> @@ -1286,7 +1250,7 @@
>         win32_handlers = (Ecore_Win32_Handler 
> *)eina_inlist_remove(EINA_INLIST_GET(win32_handlers),
>                                                                    
> EINA_INLIST_GET(wh));
>         ECORE_MAGIC_SET(wh, ECORE_MAGIC_NONE);
> -        free(wh);
> +        ecore_win32_handler_mp_free(wh);
>      }
>    win32_handlers_delete_me = EINA_FALSE;
>    win32_handler_current = NULL;
> @@ -1527,7 +1491,7 @@
>         fd_handlers = (Ecore_Fd_Handler *)
>           eina_inlist_remove(EINA_INLIST_GET(fd_handlers), 
> EINA_INLIST_GET(fdh));
>         ECORE_MAGIC_SET(fdh, ECORE_MAGIC_NONE);
> -        free(fdh);
> +        ecore_fd_handler_mp_free(fdh);
>         fd_handlers_to_delete = eina_list_remove_list(fd_handlers_to_delete, 
> l);
>      }
> }
> @@ -1558,7 +1522,7 @@
>                eina_inlist_remove(EINA_INLIST_GET(win32_handlers),
>                                   EINA_INLIST_GET(wh));
>              ECORE_MAGIC_SET(wh, ECORE_MAGIC_NONE);
> -             free(wh);
> +             ecore_win32_handler_mp_free(wh);
>           }
>      }
>    if (!deleted_in_use) win32_handlers_delete_me = EINA_FALSE;
>
> Modified: trunk/ecore/src/lib/ecore/ecore_pipe.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_pipe.c    2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_pipe.c    2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -80,21 +80,6 @@
>
> #endif /* ! _WIN32 */
>
> -struct _Ecore_Pipe
> -{
> -                     ECORE_MAGIC;
> -   int               fd_read;
> -   int               fd_write;
> -   Ecore_Fd_Handler *fd_handler;
> -   const void       *data;
> -   Ecore_Pipe_Cb     handler;
> -   unsigned int      len;
> -   int               handling;
> -   size_t            already_read;
> -   void             *passed_data;
> -   int               message;
> -   Eina_Bool         delete_me : 1;
> -};
>
> static Eina_Bool _ecore_pipe_read(void             *data,
>                                   Ecore_Fd_Handler *fd_handler);
> @@ -125,12 +110,12 @@
>
>    if (!handler) return NULL;
>
> -   p = (Ecore_Pipe *)calloc(1, sizeof(Ecore_Pipe));
> +   p = ecore_pipe_calloc(1);
>    if (!p) return NULL;
>
>    if (pipe(fds))
>      {
> -        free(p);
> +        ecore_pipe_mp_free(p);
>         return NULL;
>      }
>
> @@ -171,7 +156,7 @@
>    if (p->fd_read != PIPE_FD_INVALID) pipe_close(p->fd_read);
>    if (p->fd_write != PIPE_FD_INVALID) pipe_close(p->fd_write);
>    data = (void *)p->data;
> -   free(p);
> +   ecore_pipe_mp_free(p);
>    return data;
> }
>
>
> Modified: trunk/ecore/src/lib/ecore/ecore_poll.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_poll.c    2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_poll.c    2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -7,16 +7,6 @@
> #include "Ecore.h"
> #include "ecore_private.h"
>
> -struct _Ecore_Poller
> -{
> -   EINA_INLIST;
> -                 ECORE_MAGIC;
> -   int           ibit;
> -   unsigned char delete_me : 1;
> -   Ecore_Task_Cb func;
> -   void         *data;
> -};
> -
> static Ecore_Timer *timer = NULL;
> static int min_interval = -1;
> static int interval_incr = 0;
> @@ -159,7 +149,7 @@
>                    if (poller->delete_me)
>                      {
>                         pollers[i] = (Ecore_Poller 
> *)eina_inlist_remove(EINA_INLIST_GET(pollers[i]), EINA_INLIST_GET(poller));
> -                        free(poller);
> +                        ecore_poller_mp_free(poller);
>                         poller_delete_count--;
>                         changes++;
>                         if (poller_delete_count <= 0) break;
> @@ -281,7 +271,7 @@
>    if (!func) return NULL;
>    if (interval < 1) interval = 1;
>
> -   poller = calloc(1, sizeof(Ecore_Poller));
> +   poller = ecore_poller_calloc(1);
>    if (!poller) return NULL;
>    ECORE_MAGIC_SET(poller, ECORE_MAGIC_POLLER);
>    /* interval MUST be a power of 2, so enforce it */
> @@ -413,7 +403,7 @@
>    /* not in loop so safe - delete immediately */
>    data = poller->data;
>    pollers[poller->ibit] = (Ecore_Poller 
> *)eina_inlist_remove(EINA_INLIST_GET(pollers[poller->ibit]), 
> EINA_INLIST_GET(poller));
> -   free(poller);
> +   ecore_poller_mp_free(poller);
>    _ecore_poller_next_tick_eval();
>    return data;
> }
> @@ -433,7 +423,7 @@
>         while ((poller = pollers[i]))
>           {
>              pollers[i] = (Ecore_Poller 
> *)eina_inlist_remove(EINA_INLIST_GET(pollers[i]), 
> EINA_INLIST_GET(pollers[i]));
> -             free(poller);
> +             ecore_poller_mp_free(poller);
>           }
>      }
> }
>
> Modified: trunk/ecore/src/lib/ecore/ecore_private.h
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_private.h 2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_private.h 2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -79,12 +79,15 @@
> #define ECORE_MAGIC_WIN32_HANDLER 0xf7e8f1a3
> #define ECORE_MAGIC_JOB           0x76543210
>
> +typedef unsigned int Ecore_Magic;
> #define ECORE_MAGIC               Ecore_Magic __magic
>
> #define ECORE_MAGIC_SET(d, m)      (d)->__magic = (m)
> #define ECORE_MAGIC_CHECK(d, m)    ((d) && ((d)->__magic == (m)))
> #define ECORE_MAGIC_FAIL(d, m, fn) _ecore_magic_fail((d), (d) ? (d)->__magic 
> : 0, (m), (fn));
>
> +#include "ecore_types.h"
> +
> /* undef the following, we want our version */
> #undef FREE
> #define FREE(ptr)                  free(ptr); ptr = NULL;
> @@ -116,8 +119,6 @@
>        return;                                    \
>     }
>
> -typedef unsigned int Ecore_Magic;
> -
> EAPI void _ecore_magic_fail(const void *d,
>                             Ecore_Magic m,
>                             Ecore_Magic req_m,
> @@ -350,4 +351,26 @@
> extern Eina_Bool _ecore_glib_always_integrate;
> extern Ecore_Select_Function main_loop_select;
>
> +Eina_Bool ecore_mempool_init(void);
> +void ecore_mempool_shutdown(void);
> +#define GENERIC_ALLOC_FREE_HEADER(TYPE, Type) \
> +  TYPE *Type##_calloc(unsigned int);          \
> +  void Type##_mp_free(TYPE *e);
> +
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Animator, ecore_animator);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Event_Handler, ecore_event_handler);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Event_Filter, ecore_event_filter);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Event, ecore_event);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Idle_Exiter, ecore_idle_exiter);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Idle_Enterer, ecore_idle_enterer);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Idler, ecore_idler);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Job, ecore_job);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Timer, ecore_timer);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Poller, ecore_poller);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Pipe, ecore_pipe);
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Fd_Handler, ecore_fd_handler);
> +#ifdef _WIN32
> +GENERIC_ALLOC_FREE_HEADER(Ecore_Win32_Handler, ecore_win32_handler);
> #endif
> +
> +#endif
>
> Modified: trunk/ecore/src/lib/ecore/ecore_timer.c
> ===================================================================
> --- trunk/ecore/src/lib/ecore/ecore_timer.c   2011-12-02 22:50:00 UTC (rev 
> 65832)
> +++ trunk/ecore/src/lib/ecore/ecore_timer.c   2011-12-03 03:39:07 UTC (rev 
> 65833)
> @@ -8,34 +8,6 @@
> #include "Ecore.h"
> #include "ecore_private.h"
>
> -#ifdef WANT_ECORE_TIMER_DUMP
> -# include <string.h>
> -# include <execinfo.h>
> -# define ECORE_TIMER_DEBUG_BT_NUM 64
> -typedef void (*Ecore_Timer_Bt_Func)();
> -#endif
> -
> -struct _Ecore_Timer
> -{
> -   EINA_INLIST;
> -                       ECORE_MAGIC;
> -   double              in;
> -   double              at;
> -   double              pending;
> -   Ecore_Task_Cb       func;
> -   void               *data;
> -
> -#ifdef WANT_ECORE_TIMER_DUMP
> -   Ecore_Timer_Bt_Func timer_bt[ECORE_TIMER_DEBUG_BT_NUM];
> -   int                 timer_bt_num;
> -#endif
> -
> -   int                 references;
> -   unsigned char       delete_me : 1;
> -   unsigned char       just_added : 1;
> -   unsigned char       frozen : 1;
> -};
> -
> static void _ecore_timer_set(Ecore_Timer  *timer,
>                              double        at,
>                              double        in,
> @@ -140,7 +112,7 @@
>    _ecore_lock();
>    if (!func) goto unlock;
>    if (in < 0.0) in = 0.0;
> -   timer = calloc(1, sizeof(Ecore_Timer));
> +   timer = ecore_timer_calloc(1);
>    if (!timer) goto unlock;
>    ECORE_MAGIC_SET(timer, ECORE_MAGIC_TIMER);
>    now = ecore_time_get();
> @@ -470,7 +442,7 @@
>
>    if (!func) return timer;
>    if (in < 0.0) in = 0.0;
> -   timer = calloc(1, sizeof(Ecore_Timer));
> +   timer = ecore_timer_calloc(1);
>    if (!timer) return timer;
>    ECORE_MAGIC_SET(timer, ECORE_MAGIC_TIMER);
>    now = ecore_loop_time_get();
> @@ -510,7 +482,7 @@
>         if (timer->delete_me)
>           timers_delete_me--;
>
> -        free(timer);
> +        ecore_timer_mp_free(timer);
>         return data;
>      }
>
> @@ -529,14 +501,14 @@
>      {
>         timers = (Ecore_Timer *)eina_inlist_remove(EINA_INLIST_GET(timers), 
> EINA_INLIST_GET(timers));
>         ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
> -        free(timer);
> +        ecore_timer_mp_free(timer);
>      }
>
>    while ((timer = suspended))
>      {
>         suspended = (Ecore_Timer 
> *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(suspended));
>         ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
> -        free(timer);
> +        ecore_timer_mp_free(timer);
>      }
>
>    timer_current = NULL;
> @@ -563,7 +535,7 @@
>                }
>              timers = (Ecore_Timer 
> *)eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
>              ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
> -             free(timer);
> +             ecore_timer_mp_free(timer);
>              timers_delete_me--;
>              done++;
>              if (timers_delete_me == 0) return;
> @@ -583,7 +555,7 @@
>                }
>              suspended = (Ecore_Timer 
> *)eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer));
>              ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
> -             free(timer);
> +             ecore_timer_mp_free(timer);
>              timers_delete_me--;
>              done++;
>              if (timers_delete_me == 0) return;
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure
> contains a definitive record of customers, application performance,
> security threats, fraudulent activity, and more. Splunk takes this
> data and makes sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-novd2d
> _______________________________________________
> enlightenment-svn mailing list
> enlightenment-...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>
>

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to