FYI, the code in src/builtin/builtin-*-gen.cc is no longer shipped and is neither performance critical as it is only used to create the code stubs for the snapshot.
On Tue, May 16, 2017 at 2:52 PM <[email protected]> wrote: > On Tuesday, May 16, 2017 at 8:34:43 PM UTC+8, Jochen Eisinger wrote: >> >> Thanks for the summary! >> >> I'm wondering whether you also plan other refactoring work for V8? >> > > No, I only have plan for this refactoring for now. > > >> >> Also, why not just import base::Bind and friends from Chromium? >> > > Chromium's implementation uses many other Chromium-specific features like > weak_ptr<>, we might end up introducing more code than V8 actually needs. > As far as I can see, CodeAssemblerCallback seems to be the only use case of > std::function that might benefit from Chromium's Callable<>. > > >> >> On Tue, May 16, 2017 at 2:04 PM <[email protected]> wrote: >> >>> Hi V8 devs, >>> >>> I saw a few functions in src/builtin/builtin-*-gen.cc and >>> src/code-stub-assembler.h uses quite a few std::function as a parameter, >>> then pass lambda function to these functions to avoid code duplication as >>> much as possible. std::function was used because raw function pointer can't >>> accept lambda function. >>> >>> However, because std::function is really powerful, it comes with a cost >>> in terms of code size and overhead when calling std::function. >>> >>> I am working on introducing function_view to src/base, a lightweight >>> callable reference that can accept normal and lambda function. >>> >>> function_view is adapted from [1] >>> <https://vittorioromeo.info/index/blog/passing_functions_to_functions.html>. >>> I have changed it so that it can be compiled with C++11, which is the >>> minimum compiler support requirement to build Chromium. >>> >>> Note: >>> >>> The callable itself must be alive longer or equal to the life time of >>> function_view object. Therefore, function_view is not a universal >>> replacement for the general-purpose std::function. >>> >>> If you need to store lambda function as class property, std::function is >>> still needed. Use case like [2] >>> <https://cs.chromium.org/chromium/src/v8/src/compiler/code-assembler.h?type=cs&l=601> >>> cannot be replaced with function_view. >>> >>> Chromium do have a very powerful library to store callback at >>> https://cs.chromium.org/chromium/src/base/bind_internal.h >>> (std::function is banned in Chromium). >>> >>> Plan: >>> >>> - Add base::function_view implementation to src/base/functional.h >>> - Convert std::function to base::function_view in >>> src/builtin/builtin-*-gen.cc and maybe other parts of src/* if >>> appropriate. >>> Usage of std::function in test/* will be ignored. >>> - Add documentation. >>> - Add unittest. >>> >>> src/compiler/s390/instruction-selector-s390.cc also uses a lot of >>> std::function + lambda, but because I can't test on this platform myself, I >>> don't feel safe to change it. It looks like dry run does not have bot for >>> s390. >>> >>> WIP CL: >>> >>> https://chromium-review.googlesource.com/c/505653/ >>> >>> [1]: >>> https://vittorioromeo.info/index/blog/passing_functions_to_functions.html >>> [2]: >>> https://cs.chromium.org/chromium/src/v8/src/compiler/code-assembler.h?type=cs&l=601 >>> >>> Sincerely, >>> Rong Jie >>> >> -- > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > --- > You received this message because you are subscribed to the Google Groups > "v8-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Camillo Bruni | Software Engineer, V8 | Google Germany GmbH | Erika-Mann Str. 33, 80636 München Registergericht und -nummer: Hamburg, HRB 86891 | Sitz der Gesellschaft: Hamburg | Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
