WebKit Bugzilla
Attachment 362441 Details for
Bug 194833
: REGRESSION(r241770): Caused crashes (Requested by smfr on #webkit).
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
ROLLOUT of r241770
bug-194833-20190219150959.patch (text/plain), 3.88 KB, created by
WebKit Commit Bot
on 2019-02-19 15:09:59 PST
(
hide
)
Description:
ROLLOUT of r241770
Filename:
MIME Type:
Creator:
WebKit Commit Bot
Created:
2019-02-19 15:09:59 PST
Size:
3.88 KB
patch
obsolete
>Subversion Revision: 241780 >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index 7ed63270ca4a3cf458d5bdc79b508799a1e15b2e..6b7ff09377f64f9713efe06a0744b30387a4a79b 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,16 @@ >+2019-02-19 Commit Queue <commit-queue@webkit.org> >+ >+ Unreviewed, rolling out r241770. >+ https://bugs.webkit.org/show_bug.cgi?id=194833 >+ >+ Caused crashes (Requested by smfr on #webkit). >+ >+ Reverted changeset: >+ >+ "Code quality cleanup in NeverDestroyed" >+ https://bugs.webkit.org/show_bug.cgi?id=194824 >+ https://trac.webkit.org/changeset/241770 >+ > 2019-02-19 Keith Miller <keith_miller@apple.com> > > Code quality cleanup in NeverDestroyed >diff --git a/Source/WTF/wtf/NeverDestroyed.h b/Source/WTF/wtf/NeverDestroyed.h >index e7e8a7ea03989cba404eabb8253500d5c3f7f553..c311f136ff5e5840ee5f49ee5f718686187d64c7 100644 >--- a/Source/WTF/wtf/NeverDestroyed.h >+++ b/Source/WTF/wtf/NeverDestroyed.h >@@ -27,7 +27,6 @@ > > #include <type_traits> > #include <utility> >-#include <wtf/ForbidHeapAllocation.h> > #include <wtf/RefCounted.h> > > // NeverDestroyed is a smart-pointer-like class that ensures that the destructor >@@ -44,9 +43,8 @@ namespace WTF { > > template<typename T> class NeverDestroyed { > WTF_MAKE_NONCOPYABLE(NeverDestroyed); >- WTF_FORBID_HEAP_ALLOCATION; >-public: > >+public: > template<typename... Args> NeverDestroyed(Args&&... args) > { > MaybeRelax<T>(new (storagePointer()) T(std::forward<Args>(args)...)); >@@ -68,16 +66,16 @@ private: > > PointerType storagePointer() const { return const_cast<PointerType>(reinterpret_cast<const T*>(&m_storage)); } > >+ // FIXME: Investigate whether we should allocate a hunk of virtual memory >+ // and hand out chunks of it to NeverDestroyed instead, to reduce fragmentation. >+ typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type m_storage; >+ > template<typename PtrType, bool ShouldRelax = std::is_base_of<RefCountedBase, PtrType>::value> struct MaybeRelax { > explicit MaybeRelax(PtrType*) { } > }; > template<typename PtrType> struct MaybeRelax<PtrType, true> { > explicit MaybeRelax(PtrType* ptr) { ptr->relaxAdoptionRequirement(); } > }; >- >- // FIXME: Investigate whether we should allocate a hunk of virtual memory >- // and hand out chunks of it to NeverDestroyed instead, to reduce fragmentation. >- typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type m_storage; > }; > > template<typename T> NeverDestroyed<T> makeNeverDestroyed(T&&); >@@ -87,7 +85,7 @@ template<typename T> NeverDestroyed<T> makeNeverDestroyed(T&&); > // share more of the code with the main NeverDestroyed above. > template<typename T> class LazyNeverDestroyed { > WTF_MAKE_NONCOPYABLE(LazyNeverDestroyed); >- WTF_FORBID_HEAP_ALLOCATION; >+ > public: > LazyNeverDestroyed() = default; > >@@ -126,6 +124,10 @@ private: > return const_cast<PointerType>(reinterpret_cast<const T*>(&m_storage)); > } > >+ // FIXME: Investigate whether we should allocate a hunk of virtual memory >+ // and hand out chunks of it to NeverDestroyed instead, to reduce fragmentation. >+ typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type m_storage; >+ > template<typename PtrType, bool ShouldRelax = std::is_base_of<RefCountedBase, PtrType>::value> struct MaybeRelax { > explicit MaybeRelax(PtrType*) { } > }; >@@ -138,10 +140,6 @@ private: > // It must not be initialized dynamically; that would not be thread safe. > bool m_isConstructed; > #endif >- >- // FIXME: Investigate whether we should allocate a hunk of virtual memory >- // and hand out chunks of it to NeverDestroyed instead, to reduce fragmentation. >- typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type m_storage; > }; > > template<typename T> inline NeverDestroyed<T> makeNeverDestroyed(T&& argument)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194833
: 362441