efl/src
Jean Guyomarc'h 34d9f20706 eina: remove usless newline
Summary:
ecore_evas: remove debug

eina: unregister log level when done with

Fixes a constant memory leak.

eina: introduce EINA_HOT and EINA_COLD

These attributes respectivelly expand to __attribute__ ((hot)) and
__attribute__ ((cold)) when available. They allow to mark functions are
being hot/cold (frequently used or not) as well as to qualify labels
within a function (likely/unlikely branches).

eo: speed-up generated calls by removing call cache

The call cache needed to by thread-local, to avoid concurrency issues.
Problem with TLS is that is adds an extra overhead, which appears to be
greater than the optimization the cache provides.

Op is naturally atomic, because it is an unsigned integer. As such, it
cannot be tempered with while another thread is reading it. When
entering the generated function, the first operation done is reading
'op'. If we have concurrency, we will have access sequences returning
either EFL_NOOP or a VALID op, because 'op' is not set until the very
end of the function, when everything has been computed. As such, we now
use the 'op' atomic integer to instore a lock-free/wait-free mechanism,
which allows to drop the TLS nature of the cache, speeding up the access
to the cache, and therefore making functions execute faster.

We don't test anymore the generation count. This can be put as a
limitation. If means that if you call efl_object_shutdown() and
re-initialize it later with different data, opcodes will be invalid.
I am not sure there is any usecase for this to ever happen.
We could move all the caches in a dedicated section, that can be
overwritten after a call to efl_object_shutdown(), but I am not sure it
will be very portable.

Benchmark: mean over 3 executions of
   ELM_TEST_AUTOBOUNCE=100 time elementary_test -to genlist

```
                     BEFORE               AFTER
------------------------------------------------------------
time (ns)            11114111647.0        9147676220.0
frames               2872.3333333333335   2904.6666666666665
time per frame (ns)  3869364.6666666665   3149535.3333333335
user time (s)        11.096666666666666   9.22
cpu (%)              22.666666666666668   18.333333333333332
```

Ref T6580

Reviewers: raster, cedric

Subscribers: cedric, jpeg

Maniphest Tasks: T6580

Differential Revision: https://phab.enlightenment.org/D5738
2018-01-16 17:50:46 +09:00
..
benchmarks benchmarks: eine: include header for using time() 2018-01-02 14:18:14 +01:00
bin eolian: aliased_base_get funcs don't need unit 2018-01-12 18:05:13 +01:00
bindings eolian: aliased_base_get funcs don't need unit 2018-01-12 18:05:13 +01:00
edje_external
examples ecore: forgotten EFL_MAIN_EX. 2018-01-15 14:22:27 -08:00
generic
lib eina: remove usless newline 2018-01-16 17:50:46 +09:00
modules efl: remove inclusion of dirent.h where it is not used 2018-01-12 11:06:12 -08:00
scripts Pyolian: add tests for recently added funcs 2018-01-14 12:05:33 +01:00
static_libs
tests eolian: aliased_base_get funcs don't need unit 2018-01-12 18:05:13 +01:00
wayland_protocol wayland: add xdg-shell vfinal support for client-side 2018-01-10 11:39:52 -05:00
CMakeLists.txt
CMakeLists_Eina.txt
Makefile.am efl-cxx: Fixes to make dist 2017-12-13 14:13:09 -02:00
Makefile_Cxx.am efl-cxx: Fixes in automake Makefiles 2017-12-14 17:42:42 -02:00
Makefile_EPhysics.am
Makefile_Ecore.am remove elgacy ecore event usage in futures that limit to mainloop only 2017-12-28 02:24:12 +09:00
Makefile_Ecore_Audio.am ecore_audio: fix using undefined macros 2017-12-13 10:27:48 -08:00
Makefile_Ecore_Avahi.am
Makefile_Ecore_Buffer.am
Makefile_Ecore_Cocoa.am
Makefile_Ecore_Con.am
Makefile_Ecore_Drm.am
Makefile_Ecore_Drm2.am
Makefile_Ecore_Evas.am
Makefile_Ecore_FB.am
Makefile_Ecore_File.am
Makefile_Ecore_IMF.am
Makefile_Ecore_IMF_Evas.am
Makefile_Ecore_Input.am
Makefile_Ecore_Input_Evas.am
Makefile_Ecore_Ipc.am
Makefile_Ecore_Js.am
Makefile_Ecore_SDL.am
Makefile_Ecore_Wayland.am
Makefile_Ecore_Win32.am
Makefile_Ecore_Wl2.am wayland: add xdg-shell vfinal support for client-side 2018-01-10 11:39:52 -05:00
Makefile_Ecore_X.am
Makefile_Ector.am
Makefile_Edje.am efl-cxx: Fixes to make dist 2017-12-13 14:13:09 -02:00
Makefile_Edje_Helper.am
Makefile_Eet.am
Makefile_Eet_Helper.am
Makefile_Eeze.am
Makefile_Efl.am Efl.Gfx.Color: add color_code{} 2017-12-22 13:29:20 +09:00
Makefile_Efl_Js.am
Makefile_Efl_Mono.am eolian-mono: Add documentation generation support 2017-12-20 19:57:17 -02:00
Makefile_Efl_Mono_MSBuild_Gen_Helper.am
Makefile_Efreet.am
Makefile_Eina.am eina: Add missing eina_internal.h 2017-12-19 10:20:18 +09:00
Makefile_Eio.am
Makefile_Eldbus.am Eldbus: add test suite for eldbus (eldbus_pending_cancel*) 2017-12-19 14:41:22 +09:00
Makefile_Elementary.am cnp_dnd: make legacy APIs use new interfaces 2018-01-11 17:56:24 +09:00
Makefile_Elocation.am
Makefile_Elput.am
Makefile_Elua.am
Makefile_Elua_Helper.am
Makefile_Embryo.am
Makefile_Emile.am
Makefile_Emotion.am
Makefile_Eo.am eo: fix tests build. 2018-01-12 09:56:34 -08:00
Makefile_Eolian.am eolian: unify test directories 2017-12-21 22:24:47 +01:00
Makefile_Eolian_Cxx.am eolian-mono: Add documentation generation support 2017-12-20 19:57:17 -02:00
Makefile_Eolian_Cxx_Helper.am
Makefile_Eolian_Files_Helper.am
Makefile_Eolian_Helper.am
Makefile_Eolian_Js.am
Makefile_Eolian_Js_Helper.am
Makefile_Eolian_Mono_Helper.am
Makefile_Escape.am
Makefile_Ethumb.am
Makefile_Ethumb_Client.am
Makefile_Evas.am efl-cxx: Fixes to make dist 2017-12-13 14:13:09 -02:00
Makefile_Evil.am Evil: remove useless dirent code 2018-01-12 13:34:32 -08:00
Makefile_Wayland_Protocols.am
Makefile_efl_wl.am efl-wl: move to xdg-shell vfinal 2018-01-10 11:39:52 -05:00