Changeset 270661 in webkit


Ignore:
Timestamp:
Dec 10, 2020 4:17:23 PM (3 years ago)
Author:
ggaren@apple.com
Message:

Unreviewed, re-landing r270132.

Regression test failures have been resolved.

Re-landed changeset:

"Use a Version 1 CFRunLoopSource for faster task dispatch"
https://bugs.webkit.org/show_bug.cgi?id=202874
https://trac.webkit.org/changeset/270132

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r270636 r270661  
     12020-12-10  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Unreviewed, re-landing r270132.
     4
     5        Regression test failures have been resolved.
     6
     7        Re-landed changeset:
     8
     9        "Use a Version 1 CFRunLoopSource for faster task dispatch"
     10        https://bugs.webkit.org/show_bug.cgi?id=202874
     11        https://trac.webkit.org/changeset/270132
     12
    1132020-12-10  Dean Jackson  <dino@apple.com>
    214
  • trunk/Source/WTF/wtf/RunLoop.h

    r270496 r270661  
    228228    Lock m_loopLock;
    229229#elif USE(COCOA_EVENT_LOOP)
    230     static void performWork(void*);
     230    static void performWork(CFMachPortRef, void* msg, CFIndex size, void* info);
    231231    RetainPtr<CFRunLoopRef> m_runLoop;
    232232    RetainPtr<CFRunLoopSourceRef> m_runLoopSource;
     233    RetainPtr<CFMachPortRef> m_port;
    233234#elif USE(GLIB_EVENT_LOOP)
    234235    void notify(Event, const char*);
  • trunk/Source/WTF/wtf/cf/RunLoopCF.cpp

    r270311 r270661  
    2929#include <CoreFoundation/CoreFoundation.h>
    3030#include <dispatch/dispatch.h>
     31#include <mach/mach.h>
    3132#include <wtf/AutodrainedPool.h>
    3233#include <wtf/SchedulePair.h>
     
    4142}
    4243
    43 void RunLoop::performWork(void* context)
     44void RunLoop::performWork(CFMachPortRef, void*, CFIndex, void* info)
    4445{
    4546    AutodrainedPool pool;
    46     static_cast<RunLoop*>(context)->performWork();
     47    static_cast<RunLoop*>(info)->performWork();
    4748}
    4849
     
    5051    : m_runLoop(CFRunLoopGetCurrent())
    5152{
    52     CFRunLoopSourceContext context = { 0, this, 0, 0, 0, 0, 0, 0, 0, performWork };
    53     m_runLoopSource = adoptCF(CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &context));
     53    CFMachPortContext context = { 0, this, nullptr, nullptr, nullptr };
     54    m_port = adoptCF(CFMachPortCreate(kCFAllocatorDefault, performWork, &context, nullptr));
     55    m_runLoopSource = adoptCF(CFMachPortCreateRunLoopSource(kCFAllocatorDefault, m_port.get(), 0));
    5456    CFRunLoopAddSource(m_runLoop.get(), m_runLoopSource.get(), kCFRunLoopCommonModes);
    5557}
     
    5759RunLoop::~RunLoop()
    5860{
     61    CFMachPortInvalidate(m_port.get());
    5962    CFRunLoopSourceInvalidate(m_runLoopSource.get());
    6063}
     
    6265void RunLoop::wakeUp()
    6366{
    64     CFRunLoopSourceSignal(m_runLoopSource.get());
    65     CFRunLoopWakeUp(m_runLoop.get());
     67    mach_msg_header_t header;
     68    header.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0);
     69    header.msgh_size = sizeof(mach_msg_header_t);
     70    header.msgh_remote_port = CFMachPortGetPort(m_port.get());
     71    header.msgh_local_port = MACH_PORT_NULL;
     72    header.msgh_id = 0;
     73    mach_msg_return_t result = mach_msg(&header, MACH_SEND_MSG | MACH_SEND_TIMEOUT, header.msgh_size, 0, MACH_PORT_NULL, 0, MACH_PORT_NULL);
     74    RELEASE_ASSERT(result == MACH_MSG_SUCCESS || result == MACH_SEND_TIMED_OUT);
     75    if (result == MACH_SEND_TIMED_OUT)
     76        mach_msg_destroy(&header);
    6677}
    6778
  • trunk/Tools/ChangeLog

    r270652 r270661  
     12020-12-10  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Unreviewed, re-landing r270132.
     4
     5        Regression test failures have been resolved.
     6
     7        Re-landed changeset:
     8
     9        "Use a Version 1 CFRunLoopSource for faster task dispatch"
     10        https://bugs.webkit.org/show_bug.cgi?id=202874
     11        https://trac.webkit.org/changeset/270132
     12
    1132020-12-10  Don Olmstead  <don.olmstead@sony.com>
    214
  • trunk/Tools/TestWebKitAPI/cocoa/UtilitiesCocoa.mm

    r270311 r270661  
    3939{
    4040    for (uint64_t i = 0; i < count; ++i)
    41         [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];
     41        while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true) == kCFRunLoopRunHandledSource) { }
    4242}
    4343
Note: See TracChangeset for help on using the changeset viewer.