Changeset 270661 in webkit
- Timestamp:
- Dec 10, 2020 4:17:23 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r270636 r270661 1 2020-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 1 13 2020-12-10 Dean Jackson <dino@apple.com> 2 14 -
trunk/Source/WTF/wtf/RunLoop.h
r270496 r270661 228 228 Lock m_loopLock; 229 229 #elif USE(COCOA_EVENT_LOOP) 230 static void performWork( void*);230 static void performWork(CFMachPortRef, void* msg, CFIndex size, void* info); 231 231 RetainPtr<CFRunLoopRef> m_runLoop; 232 232 RetainPtr<CFRunLoopSourceRef> m_runLoopSource; 233 RetainPtr<CFMachPortRef> m_port; 233 234 #elif USE(GLIB_EVENT_LOOP) 234 235 void notify(Event, const char*); -
trunk/Source/WTF/wtf/cf/RunLoopCF.cpp
r270311 r270661 29 29 #include <CoreFoundation/CoreFoundation.h> 30 30 #include <dispatch/dispatch.h> 31 #include <mach/mach.h> 31 32 #include <wtf/AutodrainedPool.h> 32 33 #include <wtf/SchedulePair.h> … … 41 42 } 42 43 43 void RunLoop::performWork( void* context)44 void RunLoop::performWork(CFMachPortRef, void*, CFIndex, void* info) 44 45 { 45 46 AutodrainedPool pool; 46 static_cast<RunLoop*>( context)->performWork();47 static_cast<RunLoop*>(info)->performWork(); 47 48 } 48 49 … … 50 51 : m_runLoop(CFRunLoopGetCurrent()) 51 52 { 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)); 54 56 CFRunLoopAddSource(m_runLoop.get(), m_runLoopSource.get(), kCFRunLoopCommonModes); 55 57 } … … 57 59 RunLoop::~RunLoop() 58 60 { 61 CFMachPortInvalidate(m_port.get()); 59 62 CFRunLoopSourceInvalidate(m_runLoopSource.get()); 60 63 } … … 62 65 void RunLoop::wakeUp() 63 66 { 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); 66 77 } 67 78 -
trunk/Tools/ChangeLog
r270652 r270661 1 2020-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 1 13 2020-12-10 Don Olmstead <don.olmstead@sony.com> 2 14 -
trunk/Tools/TestWebKitAPI/cocoa/UtilitiesCocoa.mm
r270311 r270661 39 39 { 40 40 for (uint64_t i = 0; i < count; ++i) 41 [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];41 while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true) == kCFRunLoopRunHandledSource) { } 42 42 } 43 43
Note: See TracChangeset
for help on using the changeset viewer.