On Tuesday 09 July 2013 13:40, Tom Hacohen wrote : > On 09/07/13 03:55, Carsten Haitzler (The Rasterman) wrote: > > On Mon, 08 Jul 2013 18:00:15 +0100 Tom Hacohen <tom.haco...@samsung.com> > > said: > > > >> Hey guys, > >> > >> The hero Jeremy Zurcher has been playing around and looking for ways to > >> improve Eo and address all the issues that have been raised by everyone. > >> We revisited some old ideas, tried some new ideas and changed our > >> compromises and preferences to better suit our needs (followed by the > >> extensive trial period). We think we made things better and we'd like to > >> hear your thoughts and suggestions. > >> > >> The code resides in devs/tasn/eo2. The differences are not major > >> usage-wise (i.e eo_do), but are major internally and class-creation-wise. > >> There's an example of the usage of the new API in the eo2test directory. > >> The existing code-base hasn't been changed to use the new API, so > >> there's not a lot to review. > >> Eo2 is not complete, we'd like to hear your thoughts before finishing > >> things. > >> > >> Major changes: > >> 1. No more va_args, good ol' normal functions instead. > > > > good and bad. good as varags is a bit unwieldy. bad as in more symbols and > > either more function calls inlined in app code OR more code in general > > inlined > > (with macros or inline funcs). end result? unknown until we try. also > > another > > bad... work to port the existing eo code over. without full details, amount > > of > > work unknown. (missing git tree). > > I think it's better to inline those in the app, yeah. I don't think a > function call + an if are much to worry about. > Amount of work is known: everything needs to be done. This is a draft, > not even a complete solution. This example doesn't handle eo_do_super > and the eo_data_scope_get.
I pushed some stuff in devs/tasn/eo2, nothing inlined (real method call performed), basic eo_data_scope_get support (+ real eo fct call) and a stupid benchmark Intel(R) Core(TM)2 Duo CPU E7500@2.93GHz 64 bits CFLAGS="-O2" ./make.sh gcc: EO : time 71 [ms] EO2: time 67 [ms] clang: EO : time 98 [ms] EO2: time 54 [ms] > > > > >> 2. Functions are resolved in eo and then called directly, creating a > >> "flatter" backtrace. > >> 3. We can have return values (to some extent). > >> 4. Less boiler-plate. > >> 5. Looks like we'll be able to get rid of some code thanks to this change. > >> 6. Possibly (probably) faster on platforms that pass parameters in > >> registers. > > > > hmm unlikely as now its: > > 1 func to begin > > 2 func to end > > 2 func call s per method > > Yeah, but OTOH parameters will be passed in registers instead of the > stack. I guess you are right though. > > > > as opposed to 1 func for begin+end, 1 func per method. i done see eo2 in > > git, > > so i can only comment on the point here, not the code. (if the lookup is a > > macro to get the func ptr, then call it directly, then sure, 2 fn call per > > method). another downside to it all being macros.. code size goes up, this > > instruction cache coherency goes down... :/ > > It's not all macros, code is there. :) > > >> 7. Easier to do breakpoint on a specific eo_do call, instead of an > >> implementation. > >> > >> What we'd still like to achieve: > >> 1. Being able to drop the IDs in favour for more "friendly" IDs. It'd be > >> best to find a way to use the function pointers (for example) as the > >> IDs, but the problem is, that because function pointers are more > >> "unknown" we can do less optimisations on them which we'd like to avoid. > >> 2. Reduce more boiler-plate. > >> > >> Haven't been implemented yet: eo_do_super (among many other things). > >> > >> Additional comments: > >> EO_FUNC - this one creates a function that resolves and returns the > >> appropriate function. The functions created using this macro should be > >> used instead of the current eo macros. This one can potentially be > >> improved. > >> eo2_do_start/end are just the entry/exit hooks of eo2_do (ref/unref and > >> possibly other stuff in the future). > >> > >> Looking forward to hearing what you have to say. > > > > no tree. no git. :) > > As mentioned by others in this thread, it's a branch, not a different > repo. Why would I put it in a different repo?! :) > > -- > Tom. > > > ------------------------------------------------------------------------------ > See everything from the browser to the database with AppDynamics > Get end-to-end visibility with application monitoring from AppDynamics > Isolate bottlenecks and diagnose root cause in seconds. > Start your free trial of AppDynamics Pro today! > http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel --- Hell'O from Yverdoom Jérémy (jeyzu) ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel