Thanks for the summary! I'm wondering whether you also plan other refactoring work for V8?
Also, why not just import base::Bind and friends from Chromium? 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.
