efl/src/lib/eo
Jean-Philippe Andre 86d1f2b6cd eo: Use COW to save 8~16 bytes per object
Summary:
This uses Eina_Cow to implement support for rarely used features
in EO objects. This covers:
- composite objects (eg. UI widgets: combobox, text, video, win)
- vtable for efl_object_override
- del_intercept

All of these features are quite tricky to get right and while
very useful, should still be used with great care. With this patch,
the size of an _Eo_Object struct comes down from 80 bytes (rounded
up from 72b) to 64 bytes (rounded up from 56b) on 64 bits.

Also I haven't measured precisely but I don't expect any performance
impact since the COW data is more likely to remain in L1/L2 cache,
as the default one will be used most often. Unfortunately, the
results of "make benchmark" have been quite inconsistent over
multiple runs.

This saves ~64kb in elementary_test (>4k objects) at the cost of
~100 calls to COW write (del intercept on some events).

@optimization

Reviewers: raster, cedric

Differential Revision: https://phab.enlightenment.org/D4796
2017-04-18 18:52:27 +09:00
..
CMakeLists.txt cmake/eo: add description (fills eo.pc file) 2017-01-23 19:34:39 -02:00
Eo.h eo - remove the spare eo domain for now for future expansion 2017-01-12 13:08:57 +09:00
efl_class.eo docs: eo: finish up docs for eo 2016-11-10 15:14:42 +01:00
efl_future.c Efl_Future: class name (string) using "." for namespace. 2016-12-12 02:30:33 -02:00
efl_future.h eo: add missing since tags for functions added during 1.19 cycle 2017-02-14 21:47:15 +01:00
efl_interface.eo Eo: Rename most of Eo to the Efl prefix. 2016-08-11 17:04:43 +01:00
efl_object.eo efl_object: document when callbacks are called 2017-02-10 18:50:41 +01:00
efl_object_override.eo Eo: Rename most of Eo to the Efl prefix. 2016-08-11 17:04:43 +01:00
eina_types.eot docs: eina: add doc for new eina value type 2017-02-09 14:47:22 +01:00
eo.c eo: Use COW to save 8~16 bytes per object 2017-04-18 18:52:27 +09:00
eo_add_fallback.c all: use void if we really want to make sure we do not accept parameters 2016-12-06 17:16:24 +01:00
eo_add_fallback.h Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
eo_base_class.c eo: Use COW to save 8~16 bytes per object 2017-04-18 18:52:27 +09:00
eo_class_class.c Eo: Rename most of Eo to the Efl prefix. 2016-08-11 17:04:43 +01:00
eo_private.h eo: Use COW to save 8~16 bytes per object 2017-04-18 18:52:27 +09:00
eo_ptr_indirection.c eo: Make _eo_obj_pointer_done an inline function 2017-02-21 10:52:39 +09:00
eo_ptr_indirection.h eo: allow valgrind-like tracking of object lifecycle. 2016-12-02 21:15:17 -02:00
eo_ptr_indirection.x eo: Make _eo_obj_pointer_done an inline function 2017-02-21 10:52:39 +09:00