tasn pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1ed0edfb9eff9796443078497bc7c088da32f378

commit 1ed0edfb9eff9796443078497bc7c088da32f378
Author: Tom Hacohen <t...@stosb.com>
Date:   Mon Oct 12 16:12:36 2015 +0100

    Eo: Optimise object data fetching (minor).
    
    Pre-calculate object data offset for improved performance.
---
 src/lib/eo/eo.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 22120cd..0f8b065 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -1352,6 +1352,11 @@ eo_class_new(const Eo_Class_Description *desc, const 
Eo_Class *parent_id, ...)
         klass->data_offset = klass->parent->data_offset +
            EO_ALIGN_SIZE(klass->parent->desc->data_size);
      }
+   else
+     {
+        /* Data starts after the object size. */
+        klass->data_offset = _eo_sz;
+     }
 
    mro = eina_list_remove(mro, NULL);
    mro = eina_list_prepend(mro, klass);
@@ -1406,7 +1411,7 @@ eo_class_new(const Eo_Class_Description *desc, const 
Eo_Class *parent_id, ...)
         extn_data_itr->offset = 0;
      }
 
-   klass->obj_size = _eo_sz + extn_data_off;
+   klass->obj_size = extn_data_off;
    if (getenv("EO_DEBUG"))
      {
         fprintf(stderr, "Eo class '%s' will take %u bytes per object.\n",
@@ -1604,7 +1609,7 @@ static inline void *
 _eo_data_scope_get(const _Eo_Object *obj, const _Eo_Class *klass)
 {
    if (EINA_LIKELY((klass->desc->data_size > 0) && (klass->desc->type != 
EO_CLASS_TYPE_MIXIN)))
-     return ((char *) obj) + _eo_sz + klass->data_offset;
+     return ((char *) obj) + klass->data_offset;
 
    if (EINA_UNLIKELY(klass->desc->data_size == 0))
      {
@@ -1620,7 +1625,7 @@ _eo_data_scope_get(const _Eo_Object *obj, const _Eo_Class 
*klass)
         while (doff_itr->klass)
           {
              if (doff_itr->klass == klass)
-               return ((char *) obj) + _eo_sz + doff_itr->offset;
+               return ((char *) obj) + doff_itr->offset;
              doff_itr++;
           }
      }

-- 


Reply via email to