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