Note that style-checker change is landed now.

-Yusuke

> On Aug 19, 2019, at 00:24, Yusuke Suzuki <ysuz...@apple.com> wrote:
> 
> Hello WebKit folks!
> 
> I would like to announce that I’ve just landed the patch which introduces 
> `WTF::makeUnique<T>` and `WTF::makeUniqueWithoutFastMallocCheck<T>` in 
> https://trac.webkit.org/changeset/248846 
> <https://trac.webkit.org/changeset/248846>.
> They are drop-in-replacement to std::make_unique<T>, and we should not use 
> std::make_unique<T> after that patch is introduced.
> I’m planning to add cpplint check for `std::make_unique` to avoid the use of 
> that.
> 
> The motivation behind this change is the following.
> 
> 1. Our typical way of allocating heap memory is three-fold. Using containers 
> (Vector etc.), RefCounted, and std::unique_ptr.
> 2. Containers and RefCounted are covered well by FastMalloc.
> 3. But std::unique_ptr case, we missed using FastMalloc in many places so far.
> 
> Even in very recently written code, we missed FastMalloc annotation. For 
> example, we sometimes create a data structure just like a struct, and 
> allocate it with make_unique.
> 
> struct XXXData {
>     ...
> };
> 
> m_data = std::make_unique<XXXData>();
> 
> We missed WTF_MAKE_STRUCT_FAST_ALLOCATED annotation in XXXData so frequently 
> so that the allocation of XXXData ends up being allocated from system-malloc.
> 
> This WTF::makeUnique adds one `static_assert` over std::make_unique: the 
> static_assert ensures T is FastMalloced or IsoHeap-allocated.
> Otherwise, we see compile-error. This mechanism surprisingly found so many 
> classes that do not have WTF_MAKE_FAST_ALLOCATED / 
> WTF_MAKE_STRUCT_FAST_ALLOCATED in our code base.
> 
> If the type T comes from ThirdParty and if we cannot annotate T with 
> FAST_ALLOCATED, we can use WTF::makeUniqueWithoutFastMallocCheck explicitly 
> as a fallback.
> 
> More detailed explanation behind why we took this design (instead of 
> allocating FastMalloced-memory automatically when using makeUnique<T>() etc.) 
> is described in ChangeLog in https://trac.webkit.org/changeset/248846/webkit 
> <https://trac.webkit.org/changeset/248846/webkit>.
> I already annotated missed structs / classes with WTF_MAKE_FAST_ALLOCATED in 
> https://trac.webkit.org/changeset/248762 
> <https://trac.webkit.org/changeset/248762>. So, now I think 99% of 
> allocations in WebKit-itself are handled well by FastMalloc.
> 
> -Yusuke

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to