Changeset 247425 in webkit


Ignore:
Timestamp:
Jul 14, 2019 3:18:03 PM (5 years ago)
Author:
Chris Dumez
Message:

Add threading assertion to WeakPtrFactory::createWeakPtr()
https://bugs.webkit.org/show_bug.cgi?id=199639

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • platform/ScrollableArea.cpp:
  • rendering/RenderObject.cpp:

Source/WTF:

Add threading assertion to WeakPtrFactory::createWeakPtr() to make sure it
is called on the same thread where the WeakPtrFactory wad constructed.

  • wtf/WeakPtr.h:

(WTF::WeakPtrFactory::WeakPtrFactory):
(WTF::WeakPtrFactory::createWeakPtr const):

Location:
trunk/Source
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r247422 r247425  
     12019-07-14  Chris Dumez  <cdumez@apple.com>
     2
     3        Add threading assertion to WeakPtrFactory::createWeakPtr()
     4        https://bugs.webkit.org/show_bug.cgi?id=199639
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Add threading assertion to WeakPtrFactory::createWeakPtr() to make sure it
     9        is called on the same thread where the WeakPtrFactory wad constructed.
     10
     11        * wtf/WeakPtr.h:
     12        (WTF::WeakPtrFactory::WeakPtrFactory):
     13        (WTF::WeakPtrFactory::createWeakPtr const):
     14
    1152019-07-14  Dean Jackson  <dino@apple.com>
    216
  • trunk/Source/WTF/wtf/WeakPtr.h

    r245972 r247425  
    2727#pragma once
    2828
     29#include <wtf/MainThread.h>
    2930#include <wtf/Noncopyable.h>
    3031#include <wtf/Ref.h>
     
    115116    WTF_MAKE_FAST_ALLOCATED;
    116117public:
    117     WeakPtrFactory() = default;
     118    WeakPtrFactory()
     119#if !ASSERT_DISABLED
     120        : m_wasConstructedOnMainThread(isMainThread())
     121#endif
     122    {
     123    }
     124
    118125    ~WeakPtrFactory()
    119126    {
     
    125132    WeakPtr<T> createWeakPtr(T& object) const
    126133    {
     134        ASSERT(m_wasConstructedOnMainThread == isMainThread());
    127135        if (!m_impl)
    128136            m_impl = WeakPtrImpl::create(&object);
     
    134142    WeakPtr<const T> createWeakPtr(const T& object) const
    135143    {
     144        ASSERT(m_wasConstructedOnMainThread == isMainThread());
    136145        if (!m_impl)
    137146            m_impl = WeakPtrImpl::create(const_cast<T*>(&object));
     
    154163
    155164    mutable RefPtr<WeakPtrImpl> m_impl;
     165#if !ASSERT_DISABLED
     166    bool m_wasConstructedOnMainThread;
     167#endif
    156168};
    157169
  • trunk/Source/WebCore/ChangeLog

    r247422 r247425  
     12019-07-14  Chris Dumez  <cdumez@apple.com>
     2
     3        Add threading assertion to WeakPtrFactory::createWeakPtr()
     4        https://bugs.webkit.org/show_bug.cgi?id=199639
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * platform/ScrollableArea.cpp:
     9        * rendering/RenderObject.cpp:
     10
    1112019-07-14  Dean Jackson  <dino@apple.com>
    212
  • trunk/Source/WebCore/platform/ScrollableArea.cpp

    r246488 r247425  
    4848struct SameSizeAsScrollableArea {
    4949    virtual ~SameSizeAsScrollableArea();
     50#if !ASSERT_DISABLED
     51    bool weakPtrFactorWasConstructedOnMainThread;
     52#endif
    5053#if ENABLE(CSS_SCROLL_SNAP)
    5154    void* pointers[3];
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r246950 r247425  
    103103struct SameSizeAsRenderObject {
    104104    virtual ~SameSizeAsRenderObject() = default; // Allocate vtable pointer.
     105#if !ASSERT_DISABLED
     106    bool weakPtrFactorWasConstructedOnMainThread;
     107#endif
    105108    void* pointers[5];
    106109#ifndef NDEBUG
Note: See TracChangeset for help on using the changeset viewer.