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.

Reply via email to