haikuwebkit/Source/WTF/wtf/SystemTracing.h

221 lines
6.2 KiB
C
Raw Permalink Normal View History

/*
* Copyright (C) 2016 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#if USE(APPLE_INTERNAL_SDK)
#include <System/sys/kdebug.h>
#define HAVE_KDEBUG_H 1
#endif
// No namespaces because this file has to be includable from C and Objective-C.
// Reserved component code. Do not change this.
#define WEBKIT_COMPONENT 47
// Trace point codes can be up to 14 bits (0-16383).
// When adding or changing these codes, update Tools/Tracing/SystemTracePoints.plist to match.
enum TracePointCode {
WTFRange = 0,
JavaScriptRange = 2500,
VMEntryScopeStart,
VMEntryScopeEnd,
Improve the system tracing points https://bugs.webkit.org/show_bug.cgi?id=169790 Reviewed by Zalan Bujtas. Use a more cohesive set of system trace points that give a good overview of what WebKit is doing. Added points for resource loading, render tree building, sync messages to the web process, async image decode, WASM and fetching cookies. Source/JavaScriptCore: * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::run): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): Source/WebCore: * loader/CookieJar.cpp: (WebCore::cookies): * loader/FrameLoader.cpp: (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::logResourceLoaded): (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::didCancel): * page/FrameView.cpp: (WebCore::FrameView::paintContents): * platform/graphics/ImageFrameCache.cpp: (WebCore::ImageFrameCache::startAsyncDecodingQueue): * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): * style/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::commit): Source/WebKit/mac: * WebView/WebHTMLView.mm: (-[WebHTMLView drawRect:]): Source/WebKit2: * UIProcess/ChildProcessProxy.h: (WebKit::ChildProcessProxy::sendSync): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleTouchEventSynchronously): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: * wtf/SystemTracing.h: Tools: * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/186748@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214084 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-17 00:47:16 +00:00
WebAssemblyCompileStart,
WebAssemblyCompileEnd,
WebAssemblyExecuteStart,
WebAssemblyExecuteEnd,
DumpJITMemoryStart,
DumpJITMemoryStop,
FromJSStart,
FromJSStop,
WebCoreRange = 5000,
Improve the system tracing points https://bugs.webkit.org/show_bug.cgi?id=169790 Reviewed by Zalan Bujtas. Use a more cohesive set of system trace points that give a good overview of what WebKit is doing. Added points for resource loading, render tree building, sync messages to the web process, async image decode, WASM and fetching cookies. Source/JavaScriptCore: * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::run): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): Source/WebCore: * loader/CookieJar.cpp: (WebCore::cookies): * loader/FrameLoader.cpp: (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::logResourceLoaded): (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::didCancel): * page/FrameView.cpp: (WebCore::FrameView::paintContents): * platform/graphics/ImageFrameCache.cpp: (WebCore::ImageFrameCache::startAsyncDecodingQueue): * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): * style/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::commit): Source/WebKit/mac: * WebView/WebHTMLView.mm: (-[WebHTMLView drawRect:]): Source/WebKit2: * UIProcess/ChildProcessProxy.h: (WebKit::ChildProcessProxy::sendSync): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleTouchEventSynchronously): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: * wtf/SystemTracing.h: Tools: * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/186748@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214084 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-17 00:47:16 +00:00
MainResourceLoadDidStartProvisional,
MainResourceLoadDidEnd,
SubresourceLoadWillStart,
SubresourceLoadDidEnd,
FetchCookiesStart,
FetchCookiesEnd,
StyleRecalcStart,
StyleRecalcEnd,
Improve the system tracing points https://bugs.webkit.org/show_bug.cgi?id=169790 Reviewed by Zalan Bujtas. Use a more cohesive set of system trace points that give a good overview of what WebKit is doing. Added points for resource loading, render tree building, sync messages to the web process, async image decode, WASM and fetching cookies. Source/JavaScriptCore: * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::run): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): Source/WebCore: * loader/CookieJar.cpp: (WebCore::cookies): * loader/FrameLoader.cpp: (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::logResourceLoaded): (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::didCancel): * page/FrameView.cpp: (WebCore::FrameView::paintContents): * platform/graphics/ImageFrameCache.cpp: (WebCore::ImageFrameCache::startAsyncDecodingQueue): * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): * style/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::commit): Source/WebKit/mac: * WebView/WebHTMLView.mm: (-[WebHTMLView drawRect:]): Source/WebKit2: * UIProcess/ChildProcessProxy.h: (WebKit::ChildProcessProxy::sendSync): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleTouchEventSynchronously): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: * wtf/SystemTracing.h: Tools: * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/186748@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214084 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-17 00:47:16 +00:00
RenderTreeBuildStart,
RenderTreeBuildEnd,
LayoutStart,
LayoutEnd,
PaintLayerStart,
PaintLayerEnd,
Improve the system tracing points https://bugs.webkit.org/show_bug.cgi?id=169790 Reviewed by Zalan Bujtas. Use a more cohesive set of system trace points that give a good overview of what WebKit is doing. Added points for resource loading, render tree building, sync messages to the web process, async image decode, WASM and fetching cookies. Source/JavaScriptCore: * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::run): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): Source/WebCore: * loader/CookieJar.cpp: (WebCore::cookies): * loader/FrameLoader.cpp: (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::logResourceLoaded): (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::didCancel): * page/FrameView.cpp: (WebCore::FrameView::paintContents): * platform/graphics/ImageFrameCache.cpp: (WebCore::ImageFrameCache::startAsyncDecodingQueue): * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): * style/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::commit): Source/WebKit/mac: * WebView/WebHTMLView.mm: (-[WebHTMLView drawRect:]): Source/WebKit2: * UIProcess/ChildProcessProxy.h: (WebKit::ChildProcessProxy::sendSync): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleTouchEventSynchronously): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: * wtf/SystemTracing.h: Tools: * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/186748@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214084 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-17 00:47:16 +00:00
AsyncImageDecodeStart,
AsyncImageDecodeEnd,
Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-06-21 Reviewed by Simon Fraser. Source/WebCore: Add trace points for requestAnimationFrame(). * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::requestAnimationFrameEnabled): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): * dom/ScriptedAnimationController.h: * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Source/WebKit2: Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: Define new trace score codes for requestAnimationFrame(). * wtf/SystemTracing.h: (WTF::TracePoint): (WTF::TraceScope::TraceScope): (WTF::TraceScope::~TraceScope): Tools: Add new plist entries to be used by kdebug_trace() viewing tools. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/177064@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202297 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-21 22:29:57 +00:00
RAFCallbackStart,
RAFCallbackEnd,
MemoryPressureHandlerStart,
MemoryPressureHandlerEnd,
UpdateTouchRegionsStart,
UpdateTouchRegionsEnd,
Misc display list and other cleanup https://bugs.webkit.org/show_bug.cgi?id=179150 Reviewed by Tim Horton. Source/WebCore: A few functions in GraphicsContext would assert when using display lists, because they had no recording clause. Fix them (ellipse drawing, and focus ring drawing). Use #pragma once in more places. Add system trace points for display list recording. No behavior change for non-display list code. * platform/graphics/GraphicsContext.cpp: (WebCore::GraphicsContext::fillEllipse): (WebCore::GraphicsContext::strokeEllipse): * platform/graphics/PlatformLayer.h: * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::recursiveCommitChanges): * platform/graphics/ca/cocoa/WebSystemBackdropLayer.h: * platform/graphics/ca/cocoa/WebTiledBackingLayer.h: * platform/graphics/cg/GraphicsContextCG.h: * platform/graphics/cocoa/GraphicsContextCocoa.mm: (WebCore::GraphicsContext::drawFocusRing): * platform/graphics/displaylists/DisplayList.h: * platform/graphics/displaylists/DisplayListItems.h: (WebCore::DisplayList::DrawFocusRingPath::create): (WebCore::DisplayList::DrawFocusRingPath::width const): (WebCore::DisplayList::DrawFocusRingPath::offset const): (WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath): (WebCore::DisplayList::DrawFocusRingRects::create): (WebCore::DisplayList::DrawFocusRingRects::width const): (WebCore::DisplayList::DrawFocusRingRects::offset const): (WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects): * platform/graphics/displaylists/DisplayListRecorder.cpp: (WebCore::DisplayList::Recorder::restore): (WebCore::DisplayList::Recorder::drawFocusRing): * platform/graphics/displaylists/DisplayListRecorder.h: * platform/graphics/displaylists/DisplayListReplayer.h: * platform/graphics/mac/WebLayer.h: Source/WTF: Add system trace points for display list recording. * wtf/SystemTracing.h: Tools: Add system trace points for display list recording. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/195259@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@224312 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-11-02 03:08:53 +00:00
DisplayListRecordStart,
DisplayListRecordEnd,
DisplayRefreshDispatchingToMainThread,
ComputeEventRegionsStart,
ComputeEventRegionsEnd,
requestAnimationFrame should execute before the next frame https://bugs.webkit.org/show_bug.cgi?id=177484 Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-04-10 Reviewed by Simon Fraser. LayoutTests/imported/w3c: Add trace points for the page RenderingUpdate. * web-platform-tests/resize-observer/resources/resizeTestHelper.js: Change ResizeTestHelper.TIMEOUT to be 1 second instead of 100 ms which is too short for layout tests. Source/WebCore: This change fixes these issues with animation timing: 1. Calling the requestAnimationFrame callbacks would have happened when the DisplayLink fires. This may have happened even if the frame is missed and no display is committed. 2. Style changes and layout triggered by script could trigger painting at more than 60fps. CoreAnimation commits could happen at more than 60fps, although WindowServer will throttle those, and only some will be shown on the screen. This change introduces a new paint scheduling model where painting is driven by a "RenderingUpdateScheduler", which only triggers paints once per 16.7ms frame. Code that previously scheduled a compositing layer flush now schedules a "RenderingUpdate", and that update is driven by a DisplayRefreshMonitor callback. When the render happens, we service requestAnimationFrame callbacks, Web Animations, intersection observations and resize observations per the "Update the rendering" step of the HTML Event Loop specification: <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>. In the future, more rendering steps will be added to this code. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::platformHandleFocusedUIElementChanged): Fix layout tests by adding null check. * animation/DocumentAnimationScheduler.cpp: Removed. * animation/DocumentAnimationScheduler.h: Removed. * animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::DocumentTimeline): (WebCore::DocumentTimeline::updateThrottlingState): (WebCore::DocumentTimeline::suspendAnimations): (WebCore::DocumentTimeline::resumeAnimations): (WebCore::DocumentTimeline::liveCurrentTime const): (WebCore::DocumentTimeline::currentTime): (WebCore::DocumentTimeline::cacheCurrentTime): (WebCore::DocumentTimeline::animationTimingDidChange): (WebCore::DocumentTimeline::scheduleAnimationResolution): (WebCore::DocumentTimeline::unscheduleAnimationResolution): (WebCore::DocumentTimeline::updateAnimationsAndSendEvents): (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): (WebCore::DocumentTimeline::scheduleNextTick): (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement): Simplify this function by handling the case of no-animations separately. (WebCore::DocumentTimeline::resolveAnimationsForElement): Simplify the loop and delete hasPendingAcceleratedAnimations because it is initialized to true and is not changed inside the loop. (WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded): Deleted. (WebCore::DocumentTimeline::animationResolutionTimerFired): Deleted. * animation/DocumentTimeline.h: * dom/Document.cpp: (WebCore::Document::resolveStyle): There is no need to force update in resolveStyle(). notifyFlushRequired() will be called eventually which will scheduleRenderingUpdate(). (WebCore::Document::prepareForDestruction): (WebCore::Document::updateAnimationsAndSendEvents): (WebCore::Document::serviceRequestAnimationFrameCallbacks): (WebCore::Document::windowScreenDidChange): (WebCore::Document::scheduleRenderingUpdate): (WebCore::Document::updateIntersectionObservations): (WebCore::Document::addResizeObserver): (WebCore::Document::updateResizeObservations): (WebCore::Document::scheduleForcedIntersectionObservationUpdate): Deleted. (WebCore::Document::scheduleResizeObservations): Deleted. (WebCore::Document::animationScheduler): Deleted. No need to schedule web-animations, intersection observations and resize observations updates separately. All of them will be updated through the "Update the rendering" step, i.e. Page::updateRendering(). * dom/Document.h: (WebCore::Document::numberOfIntersectionObservers const): * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): (WebCore::ScriptedAnimationController::scheduleAnimation): (WebCore::ScriptedAnimationController::animationTimerFired): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): Deleted. (WebCore::ScriptedAnimationController::documentAnimationSchedulerDidFire): Deleted. * dom/ScriptedAnimationController.h: * page/FrameView.cpp: (WebCore::FrameView::didLayout): (WebCore::FrameView::viewportContentsChanged): * page/FrameViewLayoutContext.cpp: (WebCore::FrameViewLayoutContext::layoutTimerFired): * page/IntersectionObserver.cpp: (WebCore::IntersectionObserver::observe): * page/Page.cpp: (WebCore::Page::Page): (WebCore::Page::layoutIfNeeded): (WebCore::Page::updateRendering): (WebCore::Page::renderingUpdateScheduler): (WebCore::Page::willDisplayPage): Deleted. (WebCore::Page::addDocumentNeedingIntersectionObservationUpdate): Deleted. (WebCore::Page::updateIntersectionObservations): Deleted. (WebCore::Page::scheduleForcedIntersectionObservationUpdate): Deleted. (WebCore::Page::hasResizeObservers const): Deleted. (WebCore::Page::gatherDocumentsNeedingResizeObservationCheck): Deleted. (WebCore::Page::checkResizeObservations): Deleted. (WebCore::Page::scheduleResizeObservations): Deleted. (WebCore::Page::notifyResizeObservers): Deleted. * page/Page.h: (WebCore::Page::setNeedsCheckResizeObservations): Deleted. (WebCore::Page::needsCheckResizeObservations const): Deleted. The IntersectionObserver and the ResizeObserver do not need to schedule their own timers. The RenderingUpdateScheduler will schedule the "Update the rendering" step in which these obverses will be served. * page/PageOverlayController.cpp: (WebCore::PageOverlayController::didChangeViewExposedRect): (WebCore::PageOverlayController::notifyFlushRequired): Force committing the layers to be 60 fps at maximum. * page/RenderingUpdateScheduler.cpp: Added. (WebCore::RenderingUpdateScheduler::RenderingUpdateScheduler): (WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate): (WebCore::RenderingUpdateScheduler::isScheduled const): (WebCore::RenderingUpdateScheduler::startTimer): (WebCore::RenderingUpdateScheduler::clearScheduled): (WebCore::RenderingUpdateScheduler::createDisplayRefreshMonitor const): (WebCore::RenderingUpdateScheduler::windowScreenDidChange): (WebCore::RenderingUpdateScheduler::displayRefreshFired): (WebCore::RenderingUpdateScheduler::scheduleCompositingLayerFlush): * page/RenderingUpdateScheduler.h: Added. (WebCore::RenderingUpdateScheduler::create): * page/ResizeObserver.cpp: (WebCore::ResizeObserver::observe): (WebCore::ResizeObserver::scheduleObservations): Deleted. * page/ResizeObserver.h: (WebCore::ResizeObserver::hasActiveObservations const): * page/ios/ContentChangeObserver.h: * page/mac/ServicesOverlayController.mm: (WebCore::ServicesOverlayController::Highlight::notifyFlushRequired): * page/scrolling/ScrollingStateTree.cpp: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::scheduleLayerFlushNow): (WebCore::RenderLayerCompositor::layerTreeAsText): Source/WebKit: Replace the calls to Page::layoutIfNeeded() and willDisplayPage() by a single call to Page::updateRendering(). This new function implements "Update the rendering" step of the HTML Event Loop specification <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>. * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: (WebKit::DrawingAreaCoordinatedGraphics::scheduleCompositingLayerFlush): (WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState): (WebKit::DrawingAreaCoordinatedGraphics::display): * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: (WebKit::LayerTreeHost::layerFlushTimerFired): * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::flushLayers): -- Call Page::updateRendering() to make sure that "Update the rendering" happens immediately before updating the page. -- Move the call to RemoteLayerBackingStoreCollection::willFlushLayers() to be exactly before flushing the layers. This fixes the assertion ASSERT(m_inLayerFlush) which was firing when running a layout test. RemoteLayerTreeDrawingArea::flushLayers() now can call itself through TestRunner::notifyDone(). flushLayers() was calling willFlushLayers() twice before calling didFlushLayers(). * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::layoutIfNeeded): (WebKit::WebPage::updateRendering): (WebKit::WebPage::willDisplayPage): Deleted. * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::flushLayers): Source/WebKitLegacy/mac: * WebView/WebView.mm: (-[WebView _viewWillDrawInternal]): (-[WebView _flushCompositingChanges]): Call Page::updateRendering() which implements "Update the rendering" step of the HTML Event Loop specification. Source/WebKitLegacy/win: * WebView.cpp: (WebView::updateBackingStore): (WebView::flushPendingGraphicsLayerChangesSoon): (WebView::flushPendingGraphicsLayerChanges): Call Page::updateRendering() which implements "Update the rendering" step of the HTML Event Loop specification. Source/WTF: Add trace points for the page RenderingUpdate. * wtf/SystemTracing.h: Tools: Add trace points for the page RenderingUpdate. * Tracing/SystemTracePoints.plist: LayoutTests: * TestExpectations: There is a slight difference between the actual DRT and the expected DRT due to animation timing change. But these two tests are not animating correctly if they are opened in Safari with web animation turned on. * accessibility/mac/selection-notification-focus-change-expected.txt: * accessibility/mac/selection-notification-focus-change.html: Remove the debug statements form notificationCallback() since the number of times this function is called back and the order of notifications are not defined. This test has been flaky and some trials were made to make it more reliable. With this change it became flaky again. * animations/animation-multiple-callbacks-timestamp.html: Fix variable names used by an error message. * animations/no-style-recalc-during-accelerated-animation-expected.txt: * animations/no-style-recalc-during-accelerated-animation.html: One extra styleReclc was incurred due to the document styleRecalcTimer. I think this timer is not needed anymore. I will look at removing it in a separate patch. * animations/resources/animation-test-helpers.js: (waitForAnimationToStart): The expectation that animation will start at the beginning of the next event loop is not true anymore. The animation will start at the time the requestAnimationFrame fires. * compositing/video/video-clip-change-src.html: This test loads a video data and pushes it to the encoder. Originally it used to wait 150 ms after receiving the second canplaythrough. I had to change this timing to 250 ms. * css3/filters/composited-during-animation.html: Ditto. setTimeout({...}, 0) versus requestAnimationFrame. * media/media-controls-accessibility.html: Updating the accessibility button happens asynchronously, see [WebAccessibilityObjectWrapper accessibilityPerformPressAction]. Due to changing the page update timing, this test became flaky. Originally it used to setTimeout({...}, 10) to ensure the stringValue of the mutate button was changed after it was pressed. The fix is to loop using rAF till the stringValue changes. * platform/mac-wk2/accessibility/mac/selection-notification-focus-change-expected.txt: Removed. The number of time notificationCallback() is called and the order of notifications are not defined. And this is why we have two expected files: one for WK1 and the other for WK2. Since the test is now simplified, we can get rid of this duplication. We will test the minimum reliable thing we can test. Canonical link: https://commits.webkit.org/211093@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244182 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-04-11 05:44:13 +00:00
ScheduleRenderingUpdate,
TriggerRenderingUpdate,
RenderingUpdateStart,
RenderingUpdateEnd,
CompositingUpdateStart,
CompositingUpdateEnd,
DispatchTouchEventsStart,
DispatchTouchEventsEnd,
ParseHTMLStart,
ParseHTMLEnd,
DisplayListReplayStart,
DisplayListReplayEnd,
[macOS] Scrolling synchronization part 1: Have the scrolling thread wait half a frame for the main thread to complete the rendering update https://bugs.webkit.org/show_bug.cgi?id=212168 Reviewed by Tim Horton. Source/WebCore: Currently the scrolling thread is a free-running thread that moves layers around in response to wheel events, and asynchronously posts data about scrolled layers back to the main thread. That results in an almost guaranteed lack of synchronization between the displayed layer positions, and the web-exposed values for scroll position (element.scrollTop, window.pageYOffset etc). This is a frequent source of stuttering or jumpy web content when scrolling. The first step to fixing this is to synchronize the scrolling thread layer positions and the main thread state for the case where the main thread is responsive enough to render once per frame. This is achieved as follow: - When the main thread is starting a rendering update, Page::updateRendering() informs the scrolling tree via ScrollingCoordinatorMac::willStartRenderingUpdate(). This atomically waits for the scrolling thread to take the m_treeMutex (via a BinarySemaphore) and starts waiting on the m_stateCondition Condition. Now the main thread pulls the state of the scrolling tree via synchronizeStateFromScrollingTree() and uses it for the rendering update. - If the rendering update finishes within half a frame (8ms), then m_stateCondition is released, and the scrolling thread assumes that the main thread is going to commit layers rapidly enough to preserve 60fps scrolling. - If the rendering update takes too long, m_stateCondition times out, and the scrolling thread applies layer positions, triggering a CA commit on that thread. We no longer apply layer positions directly when handling wheel events. synchronizeStateFromScrollingTree() has to only pull state from nodes that have moved on the scrolling thread, so track that via ScrollingTreeScrollingNode::scrolledSinceLastCommit() and adjust the visitor function to make it available during scrolling tree traversal. * page/Page.cpp: (WebCore::Page::updateRendering): (WebCore::Page::finalizeRenderingUpdate): * page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::synchronizeStateFromScrollingTree): * page/scrolling/AsyncScrollingCoordinator.h: * page/scrolling/ScrollingCoordinator.h: (WebCore::ScrollingCoordinator::willStartRenderingUpdate): (WebCore::ScrollingCoordinator::didCompleteRenderingUpdate): (WebCore::ScrollingCoordinator::synchronizeStateFromScrollingTree): Deleted. * page/scrolling/ScrollingTree.cpp: (WebCore::ScrollingTree::handleWheelEvent): (WebCore::ScrollingTree::traverseScrollingTreeRecursive): (WebCore::ScrollingTree::commitTreeState): (WebCore::ScrollingTree::updateTreeFromStateNodeRecursive): (WebCore::ScrollingTree::applyLayerPositionsInternal): (WebCore::ScrollingTree::nominalFramesPerSecond): * page/scrolling/ScrollingTree.h: * page/scrolling/ScrollingTreeNode.h: (WebCore::ScrollingTreeNode::didCompleteCommitForNode): * page/scrolling/ScrollingTreeScrollingNode.cpp: (WebCore::ScrollingTreeScrollingNode::didCompleteCommitForNode): (WebCore::ScrollingTreeScrollingNode::currentScrollPositionChanged): * page/scrolling/ScrollingTreeScrollingNode.h: * page/scrolling/ThreadedScrollingTree.cpp: (WebCore::ThreadedScrollingTree::willStartRenderingUpdate): (WebCore::ThreadedScrollingTree::maxAllowableRenderingUpdateDurationForSynchronization): (WebCore::ThreadedScrollingTree::waitForRenderingUpdateCompletionOrTimeout): (WebCore::ThreadedScrollingTree::didCompleteRenderingUpdate): (WebCore::ThreadedScrollingTree::displayDidRefreshOnScrollingThread): * page/scrolling/ThreadedScrollingTree.h: (WebCore::ThreadedScrollingTree::treeMutex): * page/scrolling/mac/ScrollingCoordinatorMac.h: * page/scrolling/mac/ScrollingCoordinatorMac.mm: (WebCore::ScrollingCoordinatorMac::willStartRenderingUpdate): (WebCore::ScrollingCoordinatorMac::didCompleteRenderingUpdate): Source/WTF: Some new trace points for scrolling thread activity. * wtf/SystemTracing.h: Tools: Some new trace points for scrolling thread activity. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/225057@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261985 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-21 06:47:24 +00:00
ScrollingThreadRenderUpdateSyncStart,
ScrollingThreadRenderUpdateSyncEnd,
ScrollingThreadDisplayDidRefreshStart,
ScrollingThreadDisplayDidRefreshEnd,
ScrollingTreeDisplayDidRefresh,
requestAnimationFrame should execute before the next frame https://bugs.webkit.org/show_bug.cgi?id=177484 Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-04-10 Reviewed by Simon Fraser. LayoutTests/imported/w3c: Add trace points for the page RenderingUpdate. * web-platform-tests/resize-observer/resources/resizeTestHelper.js: Change ResizeTestHelper.TIMEOUT to be 1 second instead of 100 ms which is too short for layout tests. Source/WebCore: This change fixes these issues with animation timing: 1. Calling the requestAnimationFrame callbacks would have happened when the DisplayLink fires. This may have happened even if the frame is missed and no display is committed. 2. Style changes and layout triggered by script could trigger painting at more than 60fps. CoreAnimation commits could happen at more than 60fps, although WindowServer will throttle those, and only some will be shown on the screen. This change introduces a new paint scheduling model where painting is driven by a "RenderingUpdateScheduler", which only triggers paints once per 16.7ms frame. Code that previously scheduled a compositing layer flush now schedules a "RenderingUpdate", and that update is driven by a DisplayRefreshMonitor callback. When the render happens, we service requestAnimationFrame callbacks, Web Animations, intersection observations and resize observations per the "Update the rendering" step of the HTML Event Loop specification: <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>. In the future, more rendering steps will be added to this code. * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::platformHandleFocusedUIElementChanged): Fix layout tests by adding null check. * animation/DocumentAnimationScheduler.cpp: Removed. * animation/DocumentAnimationScheduler.h: Removed. * animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::DocumentTimeline): (WebCore::DocumentTimeline::updateThrottlingState): (WebCore::DocumentTimeline::suspendAnimations): (WebCore::DocumentTimeline::resumeAnimations): (WebCore::DocumentTimeline::liveCurrentTime const): (WebCore::DocumentTimeline::currentTime): (WebCore::DocumentTimeline::cacheCurrentTime): (WebCore::DocumentTimeline::animationTimingDidChange): (WebCore::DocumentTimeline::scheduleAnimationResolution): (WebCore::DocumentTimeline::unscheduleAnimationResolution): (WebCore::DocumentTimeline::updateAnimationsAndSendEvents): (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): (WebCore::DocumentTimeline::scheduleNextTick): (WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement): Simplify this function by handling the case of no-animations separately. (WebCore::DocumentTimeline::resolveAnimationsForElement): Simplify the loop and delete hasPendingAcceleratedAnimations because it is initialized to true and is not changed inside the loop. (WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded): Deleted. (WebCore::DocumentTimeline::animationResolutionTimerFired): Deleted. * animation/DocumentTimeline.h: * dom/Document.cpp: (WebCore::Document::resolveStyle): There is no need to force update in resolveStyle(). notifyFlushRequired() will be called eventually which will scheduleRenderingUpdate(). (WebCore::Document::prepareForDestruction): (WebCore::Document::updateAnimationsAndSendEvents): (WebCore::Document::serviceRequestAnimationFrameCallbacks): (WebCore::Document::windowScreenDidChange): (WebCore::Document::scheduleRenderingUpdate): (WebCore::Document::updateIntersectionObservations): (WebCore::Document::addResizeObserver): (WebCore::Document::updateResizeObservations): (WebCore::Document::scheduleForcedIntersectionObservationUpdate): Deleted. (WebCore::Document::scheduleResizeObservations): Deleted. (WebCore::Document::animationScheduler): Deleted. No need to schedule web-animations, intersection observations and resize observations updates separately. All of them will be updated through the "Update the rendering" step, i.e. Page::updateRendering(). * dom/Document.h: (WebCore::Document::numberOfIntersectionObservers const): * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): (WebCore::ScriptedAnimationController::scheduleAnimation): (WebCore::ScriptedAnimationController::animationTimerFired): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): Deleted. (WebCore::ScriptedAnimationController::documentAnimationSchedulerDidFire): Deleted. * dom/ScriptedAnimationController.h: * page/FrameView.cpp: (WebCore::FrameView::didLayout): (WebCore::FrameView::viewportContentsChanged): * page/FrameViewLayoutContext.cpp: (WebCore::FrameViewLayoutContext::layoutTimerFired): * page/IntersectionObserver.cpp: (WebCore::IntersectionObserver::observe): * page/Page.cpp: (WebCore::Page::Page): (WebCore::Page::layoutIfNeeded): (WebCore::Page::updateRendering): (WebCore::Page::renderingUpdateScheduler): (WebCore::Page::willDisplayPage): Deleted. (WebCore::Page::addDocumentNeedingIntersectionObservationUpdate): Deleted. (WebCore::Page::updateIntersectionObservations): Deleted. (WebCore::Page::scheduleForcedIntersectionObservationUpdate): Deleted. (WebCore::Page::hasResizeObservers const): Deleted. (WebCore::Page::gatherDocumentsNeedingResizeObservationCheck): Deleted. (WebCore::Page::checkResizeObservations): Deleted. (WebCore::Page::scheduleResizeObservations): Deleted. (WebCore::Page::notifyResizeObservers): Deleted. * page/Page.h: (WebCore::Page::setNeedsCheckResizeObservations): Deleted. (WebCore::Page::needsCheckResizeObservations const): Deleted. The IntersectionObserver and the ResizeObserver do not need to schedule their own timers. The RenderingUpdateScheduler will schedule the "Update the rendering" step in which these obverses will be served. * page/PageOverlayController.cpp: (WebCore::PageOverlayController::didChangeViewExposedRect): (WebCore::PageOverlayController::notifyFlushRequired): Force committing the layers to be 60 fps at maximum. * page/RenderingUpdateScheduler.cpp: Added. (WebCore::RenderingUpdateScheduler::RenderingUpdateScheduler): (WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate): (WebCore::RenderingUpdateScheduler::isScheduled const): (WebCore::RenderingUpdateScheduler::startTimer): (WebCore::RenderingUpdateScheduler::clearScheduled): (WebCore::RenderingUpdateScheduler::createDisplayRefreshMonitor const): (WebCore::RenderingUpdateScheduler::windowScreenDidChange): (WebCore::RenderingUpdateScheduler::displayRefreshFired): (WebCore::RenderingUpdateScheduler::scheduleCompositingLayerFlush): * page/RenderingUpdateScheduler.h: Added. (WebCore::RenderingUpdateScheduler::create): * page/ResizeObserver.cpp: (WebCore::ResizeObserver::observe): (WebCore::ResizeObserver::scheduleObservations): Deleted. * page/ResizeObserver.h: (WebCore::ResizeObserver::hasActiveObservations const): * page/ios/ContentChangeObserver.h: * page/mac/ServicesOverlayController.mm: (WebCore::ServicesOverlayController::Highlight::notifyFlushRequired): * page/scrolling/ScrollingStateTree.cpp: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::scheduleLayerFlushNow): (WebCore::RenderLayerCompositor::layerTreeAsText): Source/WebKit: Replace the calls to Page::layoutIfNeeded() and willDisplayPage() by a single call to Page::updateRendering(). This new function implements "Update the rendering" step of the HTML Event Loop specification <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>. * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: (WebKit::DrawingAreaCoordinatedGraphics::scheduleCompositingLayerFlush): (WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState): (WebKit::DrawingAreaCoordinatedGraphics::display): * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: (WebKit::LayerTreeHost::layerFlushTimerFired): * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::flushLayers): -- Call Page::updateRendering() to make sure that "Update the rendering" happens immediately before updating the page. -- Move the call to RemoteLayerBackingStoreCollection::willFlushLayers() to be exactly before flushing the layers. This fixes the assertion ASSERT(m_inLayerFlush) which was firing when running a layout test. RemoteLayerTreeDrawingArea::flushLayers() now can call itself through TestRunner::notifyDone(). flushLayers() was calling willFlushLayers() twice before calling didFlushLayers(). * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::layoutIfNeeded): (WebKit::WebPage::updateRendering): (WebKit::WebPage::willDisplayPage): Deleted. * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::flushLayers): Source/WebKitLegacy/mac: * WebView/WebView.mm: (-[WebView _viewWillDrawInternal]): (-[WebView _flushCompositingChanges]): Call Page::updateRendering() which implements "Update the rendering" step of the HTML Event Loop specification. Source/WebKitLegacy/win: * WebView.cpp: (WebView::updateBackingStore): (WebView::flushPendingGraphicsLayerChangesSoon): (WebView::flushPendingGraphicsLayerChanges): Call Page::updateRendering() which implements "Update the rendering" step of the HTML Event Loop specification. Source/WTF: Add trace points for the page RenderingUpdate. * wtf/SystemTracing.h: Tools: Add trace points for the page RenderingUpdate. * Tracing/SystemTracePoints.plist: LayoutTests: * TestExpectations: There is a slight difference between the actual DRT and the expected DRT due to animation timing change. But these two tests are not animating correctly if they are opened in Safari with web animation turned on. * accessibility/mac/selection-notification-focus-change-expected.txt: * accessibility/mac/selection-notification-focus-change.html: Remove the debug statements form notificationCallback() since the number of times this function is called back and the order of notifications are not defined. This test has been flaky and some trials were made to make it more reliable. With this change it became flaky again. * animations/animation-multiple-callbacks-timestamp.html: Fix variable names used by an error message. * animations/no-style-recalc-during-accelerated-animation-expected.txt: * animations/no-style-recalc-during-accelerated-animation.html: One extra styleReclc was incurred due to the document styleRecalcTimer. I think this timer is not needed anymore. I will look at removing it in a separate patch. * animations/resources/animation-test-helpers.js: (waitForAnimationToStart): The expectation that animation will start at the beginning of the next event loop is not true anymore. The animation will start at the time the requestAnimationFrame fires. * compositing/video/video-clip-change-src.html: This test loads a video data and pushes it to the encoder. Originally it used to wait 150 ms after receiving the second canplaythrough. I had to change this timing to 250 ms. * css3/filters/composited-during-animation.html: Ditto. setTimeout({...}, 0) versus requestAnimationFrame. * media/media-controls-accessibility.html: Updating the accessibility button happens asynchronously, see [WebAccessibilityObjectWrapper accessibilityPerformPressAction]. Due to changing the page update timing, this test became flaky. Originally it used to setTimeout({...}, 10) to ensure the stringValue of the mutate button was changed after it was pressed. The fix is to loop using rAF till the stringValue changes. * platform/mac-wk2/accessibility/mac/selection-notification-focus-change-expected.txt: Removed. The number of time notificationCallback() is called and the order of notifications are not defined. And this is why we have two expected files: one for WK1 and the other for WK2. Since the test is now simplified, we can get rid of this duplication. We will test the minimum reliable thing we can test. Canonical link: https://commits.webkit.org/211093@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244182 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-04-11 05:44:13 +00:00
WebKitRange = 10000,
Improve the system tracing points https://bugs.webkit.org/show_bug.cgi?id=169790 Reviewed by Zalan Bujtas. Use a more cohesive set of system trace points that give a good overview of what WebKit is doing. Added points for resource loading, render tree building, sync messages to the web process, async image decode, WASM and fetching cookies. Source/JavaScriptCore: * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::run): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): Source/WebCore: * loader/CookieJar.cpp: (WebCore::cookies): * loader/FrameLoader.cpp: (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::logResourceLoaded): (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::didCancel): * page/FrameView.cpp: (WebCore::FrameView::paintContents): * platform/graphics/ImageFrameCache.cpp: (WebCore::ImageFrameCache::startAsyncDecodingQueue): * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): * style/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::commit): Source/WebKit/mac: * WebView/WebHTMLView.mm: (-[WebHTMLView drawRect:]): Source/WebKit2: * UIProcess/ChildProcessProxy.h: (WebKit::ChildProcessProxy::sendSync): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleTouchEventSynchronously): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: * wtf/SystemTracing.h: Tools: * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/186748@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214084 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-17 00:47:16 +00:00
WebHTMLViewPaintStart,
WebHTMLViewPaintEnd,
Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-06-21 Reviewed by Simon Fraser. Source/WebCore: Add trace points for requestAnimationFrame(). * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::requestAnimationFrameEnabled): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): * dom/ScriptedAnimationController.h: * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Source/WebKit2: Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: Define new trace score codes for requestAnimationFrame(). * wtf/SystemTracing.h: (WTF::TracePoint): (WTF::TraceScope::TraceScope): (WTF::TraceScope::~TraceScope): Tools: Add new plist entries to be used by kdebug_trace() viewing tools. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/177064@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202297 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-21 22:29:57 +00:00
Improve the system tracing points https://bugs.webkit.org/show_bug.cgi?id=169790 Reviewed by Zalan Bujtas. Use a more cohesive set of system trace points that give a good overview of what WebKit is doing. Added points for resource loading, render tree building, sync messages to the web process, async image decode, WASM and fetching cookies. Source/JavaScriptCore: * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::run): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): Source/WebCore: * loader/CookieJar.cpp: (WebCore::cookies): * loader/FrameLoader.cpp: (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::logResourceLoaded): (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::didCancel): * page/FrameView.cpp: (WebCore::FrameView::paintContents): * platform/graphics/ImageFrameCache.cpp: (WebCore::ImageFrameCache::startAsyncDecodingQueue): * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): * style/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::commit): Source/WebKit/mac: * WebView/WebHTMLView.mm: (-[WebHTMLView drawRect:]): Source/WebKit2: * UIProcess/ChildProcessProxy.h: (WebKit::ChildProcessProxy::sendSync): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleTouchEventSynchronously): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: * wtf/SystemTracing.h: Tools: * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/186748@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214084 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-17 00:47:16 +00:00
WebKit2Range = 12000,
BackingStoreFlushStart,
BackingStoreFlushEnd,
BuildTransactionStart,
BuildTransactionEnd,
SyncMessageStart,
SyncMessageEnd,
SyncTouchEventStart,
SyncTouchEventEnd,
2018-04-17 15:57:32 +00:00
InitializeWebProcessStart,
InitializeWebProcessEnd,
Move from "layer flush" terminology to "rendering update" https://bugs.webkit.org/show_bug.cgi?id=207870 Reviewed by Tim Horton. Source/WebCore: Rename various functions and member variables to move away from the legacy "layer flush" terminology and instead use "rendering update", matching Page::updateRendering(). The fact that we have layers is an implementation detail. Change LayerFlushThrottlingState to be an OptionSet<>. * Headers.cmake: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::scheduleStyleRecalc): (WebCore::Document::shouldScheduleLayout): * loader/EmptyClients.h: * page/ChromeClient.h: (WebCore::ChromeClient::renderingUpdateThrottlingIsActive const): (WebCore::ChromeClient::adjustRenderUpdateThrottling): (WebCore::ChromeClient::layerFlushThrottlingIsActive const): Deleted. (WebCore::ChromeClient::adjustLayerFlushThrottling): Deleted. * page/FrameView.cpp: (WebCore::determineLayerFlushThrottleState): (WebCore::FrameView::disableLayerFlushThrottlingTemporarilyForInteraction): (WebCore::FrameView::updateLayerFlushThrottling): * page/RenderingUpdateScheduler.cpp: (WebCore::RenderingUpdateScheduler::scheduleImmediateRenderingUpdate): * page/RenderingUpdateThrottleState.h: Renamed from Source/WebCore/page/LayerFlushThrottleState.h. Source/WebKit: Rename various functions and member variables to move away from the legacy "layer flush" terminology and instead use "rendering update", matching Page::updateRendering(). The fact that we have layers is an implementation detail. Change LayerFlushThrottlingState to be an OptionSet<>. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::scheduleRenderingUpdate): (WebKit::WebChromeClient::adjustRenderUpdateThrottling): (WebKit::WebChromeClient::renderingUpdateThrottlingIsActive const): (WebKit::WebChromeClient::scheduleCompositingLayerFlush): Deleted. (WebKit::WebChromeClient::adjustLayerFlushThrottling): Deleted. (WebKit::WebChromeClient::layerFlushThrottlingIsActive const): Deleted. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/DrawingArea.h: (WebKit::DrawingArea::renderingUpdateThrottlingIsActive const): (WebKit::DrawingArea::adjustRenderUpdateThrottling): (WebKit::DrawingArea::layerFlushThrottlingIsActive const): Deleted. (WebKit::DrawingArea::adjustLayerFlushThrottling): Deleted. * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h: (WebKit::RemoteLayerTreeContext::setNextFlushIsForImmediatePaint): (WebKit::RemoteLayerTreeContext::nextFlushIsForImmediatePaint const): * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: (WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback): * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): (WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer): (WebKit::RemoteLayerTreeDrawingArea::updateGeometry): (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen): (WebKit::RemoteLayerTreeDrawingArea::forceRepaint): (WebKit::RemoteLayerTreeDrawingArea::setExposedContentRect): (WebKit::RemoteLayerTreeDrawingArea::scheduleImmediateRenderingUpdate): (WebKit::RemoteLayerTreeDrawingArea::scheduleInitialDeferredPaint): (WebKit::RemoteLayerTreeDrawingArea::scheduleRenderingUpdate): (WebKit::RemoteLayerTreeDrawingArea::adjustRenderUpdateThrottling): (WebKit::RemoteLayerTreeDrawingArea::updateRendering): (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange): (WebKit::RemoteLayerTreeDrawingArea::addTransactionCallbackID): (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlushImmediately): Deleted. (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush): Deleted. (WebKit::RemoteLayerTreeDrawingArea::adjustLayerFlushThrottling): Deleted. (WebKit::RemoteLayerTreeDrawingArea::flushLayers): Deleted. * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm: (WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::scheduleFullEditorStateUpdate): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::dynamicViewportSizeUpdate): * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): (WebKit::TiledCoreAnimationDrawingArea::~TiledCoreAnimationDrawingArea): (WebKit::TiledCoreAnimationDrawingArea::forceRepaint): (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen): (WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdate): (WebKit::TiledCoreAnimationDrawingArea::scheduleImmediateRenderingUpdate): (WebKit::TiledCoreAnimationDrawingArea::attachViewOverlayGraphicsLayer): (WebKit::TiledCoreAnimationDrawingArea::setShouldScaleViewToFitDocument): (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition): (WebKit::TiledCoreAnimationDrawingArea::addTransactionCallbackID): (WebKit::TiledCoreAnimationDrawingArea::updateRendering): (WebKit::TiledCoreAnimationDrawingArea::suspendPainting): (WebKit::TiledCoreAnimationDrawingArea::updateGeometry): (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage): (WebKit::TiledCoreAnimationDrawingArea::updateRenderingRunLoopCallback): (WebKit::TiledCoreAnimationDrawingArea::invalidateRenderingUpdateRunLoopObserver): (WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdateRunLoopObserver): (WebKit::TiledCoreAnimationDrawingArea::adjustRenderUpdateThrottling): (WebKit::TiledCoreAnimationDrawingArea::renderingUpdateThrottlingIsActive const): (WebKit::TiledCoreAnimationDrawingArea::startRenderThrottlingTimer): (WebKit::TiledCoreAnimationDrawingArea::renderThrottlingTimerFired): (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush): Deleted. (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlushImmediately): Deleted. (WebKit::TiledCoreAnimationDrawingArea::flushLayers): Deleted. (WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback): Deleted. (WebKit::TiledCoreAnimationDrawingArea::invalidateLayerFlushRunLoopObserver): Deleted. (WebKit::TiledCoreAnimationDrawingArea::scheduleLayerFlushRunLoopObserver): Deleted. (WebKit::TiledCoreAnimationDrawingArea::adjustLayerFlushThrottling): Deleted. (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingIsActive const): Deleted. (WebKit::TiledCoreAnimationDrawingArea::startLayerFlushThrottlingTimer): Deleted. (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingTimerFired): Deleted. Source/WebKitLegacy/mac: Rename various functions and member variables to move away from the legacy "layer flush" terminology and instead use "rendering update", matching Page::updateRendering(). The fact that we have layers is an implementation detail. Change LayerFlushThrottlingState to be an OptionSet<>. * WebCoreSupport/WebChromeClient.h: * WebCoreSupport/WebChromeClient.mm: (WebChromeClient::scheduleRenderingUpdate): (WebChromeClient::scheduleCompositingLayerFlush): Deleted. * WebView/WebView.mm: (-[WebView _scheduleUpdateRendering]): (-[WebView _scheduleCompositingLayerFlush]): Deleted. * WebView/WebViewData.h: * WebView/WebViewInternal.h: Source/WTF: * wtf/SystemTracing.h: Tools: Rename various functions and member variables to move away from the legacy "layer flush" terminology and instead use "rendering update", matching Page::updateRendering(). The fact that we have layers is an implementation detail. Change LayerFlushThrottlingState to be an OptionSet<>. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/220867@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256834 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-18 17:24:30 +00:00
RenderingUpdateRunLoopObserverStart,
RenderingUpdateRunLoopObserverEnd,
LayerTreeFreezeStart,
LayerTreeFreezeEnd,
FlushRemoteImageBufferStart,
FlushRemoteImageBufferEnd,
CreateInjectedBundleStart,
CreateInjectedBundleEnd,
PaintSnapshotStart,
PaintSnapshotEnd,
RenderServerSnapshotStart,
RenderServerSnapshotEnd,
TakeSnapshotStart,
TakeSnapshotEnd,
Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-06-21 Reviewed by Simon Fraser. Source/WebCore: Add trace points for requestAnimationFrame(). * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::requestAnimationFrameEnabled): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): * dom/ScriptedAnimationController.h: * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Source/WebKit2: Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: Define new trace score codes for requestAnimationFrame(). * wtf/SystemTracing.h: (WTF::TracePoint): (WTF::TraceScope::TraceScope): (WTF::TraceScope::~TraceScope): Tools: Add new plist entries to be used by kdebug_trace() viewing tools. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/177064@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202297 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-21 22:29:57 +00:00
UIProcessRange = 14000,
Improve the system tracing points https://bugs.webkit.org/show_bug.cgi?id=169790 Reviewed by Zalan Bujtas. Use a more cohesive set of system trace points that give a good overview of what WebKit is doing. Added points for resource loading, render tree building, sync messages to the web process, async image decode, WASM and fetching cookies. Source/JavaScriptCore: * wasm/WasmPlan.cpp: (JSC::Wasm::Plan::run): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): Source/WebCore: * loader/CookieJar.cpp: (WebCore::cookies): * loader/FrameLoader.cpp: (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::willSendRequestInternal): (WebCore::logResourceLoaded): (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::didCancel): * page/FrameView.cpp: (WebCore::FrameView::paintContents): * platform/graphics/ImageFrameCache.cpp: (WebCore::ImageFrameCache::startAsyncDecodingQueue): * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): * style/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::commit): Source/WebKit/mac: * WebView/WebHTMLView.mm: (-[WebHTMLView drawRect:]): Source/WebKit2: * UIProcess/ChildProcessProxy.h: (WebKit::ChildProcessProxy::sendSync): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleTouchEventSynchronously): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: * wtf/SystemTracing.h: Tools: * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/186748@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214084 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-17 00:47:16 +00:00
CommitLayerTreeStart,
CommitLayerTreeEnd,
2018-04-17 15:57:32 +00:00
ProcessLaunchStart,
ProcessLaunchEnd,
We should cache the compiled sandbox profile in a data vault https://bugs.webkit.org/show_bug.cgi?id=184991 Patch by Ben Richards <benton_richards@apple.com> on 2018-08-15 Reviewed by Ryosuke Niwa. Source/WebCore: Added functionality to FileHandle so that it can lock a file while open. Added a function to FileSystem to delete non empty directories. * platform/FileHandle.cpp: (WebCore::FileHandle::FileHandle): (WebCore::FileHandle::open): (WebCore::FileHandle::close): * platform/FileHandle.h: * platform/FileSystem.h: * platform/cocoa/FileSystemCocoa.mm: (WebCore::FileSystem::deleteNonEmptyDirectory): Source/WebKit: This patch changes a few things (note: data vaults and sandbox entitlements are only used in internal builds): (1) Instead of compiling a sandbox every time a process is launched, processes now look for a cached sandbox in a process specific data vault on macOS platforms. (ChildProcessMac.mm) (2) If a valid cached sandbox is not found, a process will create the data vault (or ensure that it exists), compile a sandbox, and cache it. (3) In order to create process specific data vaults, each process now has their own <process name>-OSX-sandbox.entitlements file which contains an entitlement with a process specific "storage class" which ensures that each process can only ever access its own data vault. (See the article on confluence "Data Vaults and Restricted Files" for more info) (4) The sandbox entitlements file for the Network and WebContent services are loaded dynamically through Scripts/<process name>-process-entitlements.sh which is triggered in a new build phase for each service. The Storage process sandbox entitlements are loaded directly in Configurations/StorageService.xcconfig. The reason that the sandbox entitlements are applied dynamically is so that these sandbox entitlements are only applied when WK_USE_RESTRICTED_ENTITLEMENTS is YES. This means that open source builds will still work. * Configurations/Network-OSX-sandbox.entitlements: Added. * Configurations/Storage-OSX-sandbox.entitlements: Added. * Configurations/StorageService.xcconfig: * Configurations/WebContent-OSX-sandbox.entitlements: Added. * Configurations/WebKit.xcconfig: * NetworkProcess/NetworkProcess.h: * PluginProcess/PluginProcess.h: * Scripts/process-network-sandbox-entitlements.sh: Added. * Scripts/process-webcontent-sandbox-entitlements.sh: Added. * Shared/ChildProcess.h: * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h: (WebKit::XPCServiceInitializer): * Shared/SandboxInitializationParameters.h: (WebKit::SandboxInitializationParameters::setOverrideSandboxProfilePath): (WebKit::SandboxInitializationParameters::overrideSandboxProfilePath const): (WebKit::SandboxInitializationParameters::setSandboxProfile): (WebKit::SandboxInitializationParameters::sandboxProfile const): (): Deleted. * Shared/mac/ChildProcessMac.mm: (WebKit::SandboxProfileDeleter::operator()): (WebKit::SandboxParametersDeleter::operator()): (WebKit::SandboxInfo::SandboxInfo): (WebKit::fileContents): (WebKit::processStorageClass): (WebKit::setAndSerializeSandboxParameters): (WebKit::sandboxDataVaultParentDirectory): (WebKit::sandboxDirectory): (WebKit::sandboxFilePath): (WebKit::ensureSandboxCacheDirectory): (WebKit::writeSandboxDataToCacheFile): (WebKit::compileAndCacheSandboxProfile): (WebKit::tryApplyCachedSandbox): (WebKit::webKit2Bundle): (WebKit::getSandboxProfileOrProfilePath): (WebKit::compileAndApplySandboxSlowCase): (WebKit::applySandbox): (WebKit::initializeSandboxParameters): (WebKit::ChildProcess::initializeSandbox): * Shared/mac/SandboxInitialiationParametersMac.mm: (WebKit::SandboxInitializationParameters::SandboxInitializationParameters): * StorageProcess/StorageProcess.h: * WebKit.xcodeproj/project.pbxproj: * WebProcess/WebProcess.h: Source/WTF: Added trace points for sandbox initialization and exposed functions needed for sandbox caching * wtf/SystemTracing.h: * wtf/spi/darwin/SandboxSPI.h: Tools: Added trace points for sandbox initialization * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/203698@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234910 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-08-16 03:34:01 +00:00
InitializeSandboxStart,
InitializeSandboxEnd,
GPUProcessRange = 16000,
WakeUpAndApplyDisplayListStart,
WakeUpAndApplyDisplayListEnd,
};
#ifdef __cplusplus
namespace WTF {
2018-04-17 15:57:32 +00:00
inline void tracePoint(TracePointCode code, uint64_t data1 = 0, uint64_t data2 = 0, uint64_t data3 = 0, uint64_t data4 = 0)
Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-06-21 Reviewed by Simon Fraser. Source/WebCore: Add trace points for requestAnimationFrame(). * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::requestAnimationFrameEnabled): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): * dom/ScriptedAnimationController.h: * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Source/WebKit2: Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: Define new trace score codes for requestAnimationFrame(). * wtf/SystemTracing.h: (WTF::TracePoint): (WTF::TraceScope::TraceScope): (WTF::TraceScope::~TraceScope): Tools: Add new plist entries to be used by kdebug_trace() viewing tools. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/177064@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202297 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-21 22:29:57 +00:00
{
#if HAVE(KDEBUG_H)
kdebug_trace(ARIADNEDBG_CODE(WEBKIT_COMPONENT, code), data1, data2, data3, data4);
Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-06-21 Reviewed by Simon Fraser. Source/WebCore: Add trace points for requestAnimationFrame(). * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::requestAnimationFrameEnabled): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): * dom/ScriptedAnimationController.h: * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Source/WebKit2: Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: Define new trace score codes for requestAnimationFrame(). * wtf/SystemTracing.h: (WTF::TracePoint): (WTF::TraceScope::TraceScope): (WTF::TraceScope::~TraceScope): Tools: Add new plist entries to be used by kdebug_trace() viewing tools. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/177064@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202297 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-21 22:29:57 +00:00
#else
UNUSED_PARAM(code);
UNUSED_PARAM(data1);
UNUSED_PARAM(data2);
UNUSED_PARAM(data3);
UNUSED_PARAM(data4);
Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-06-21 Reviewed by Simon Fraser. Source/WebCore: Add trace points for requestAnimationFrame(). * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::requestAnimationFrameEnabled): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): * dom/ScriptedAnimationController.h: * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Source/WebKit2: Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: Define new trace score codes for requestAnimationFrame(). * wtf/SystemTracing.h: (WTF::TracePoint): (WTF::TraceScope::TraceScope): (WTF::TraceScope::~TraceScope): Tools: Add new plist entries to be used by kdebug_trace() viewing tools. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/177064@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202297 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-21 22:29:57 +00:00
#endif
}
class TraceScope {
[WTF][JSC] Make JSC and WTF aggressively-fast-malloced https://bugs.webkit.org/show_bug.cgi?id=200611 Reviewed by Saam Barati. Source/JavaScriptCore: This patch aggressively puts many classes into FastMalloc. In JSC side, we grep `std::make_unique` etc. to find potentially system-malloc-allocated classes. After this patch, all the JSC related allocations in JetStream2 cli is done from bmalloc. In the future, it would be nice that we add `WTF::makeUnique<T>` helper function and throw a compile error if `T` is not FastMalloc annotated[1]. Putting WebKit classes in FastMalloc has many benefits. 1. Simply, it is fast. 2. vmmap can tell the amount of memory used for WebKit. 3. bmalloc can isolate WebKit memory allocation from the rest of the world. This is useful since we can know more about what component is corrupting the memory from the memory corruption crash. [1]: https://bugs.webkit.org/show_bug.cgi?id=200620 * API/ObjCCallbackFunction.mm: * assembler/AbstractMacroAssembler.h: * b3/B3PhiChildren.h: * b3/air/AirAllocateRegistersAndStackAndGenerateCode.h: * b3/air/AirDisassembler.h: * bytecode/AccessCaseSnippetParams.h: * bytecode/CallVariant.h: * bytecode/DeferredSourceDump.h: * bytecode/ExecutionCounter.h: * bytecode/GetByIdStatus.h: * bytecode/GetByIdVariant.h: * bytecode/InByIdStatus.h: * bytecode/InByIdVariant.h: * bytecode/InstanceOfStatus.h: * bytecode/InstanceOfVariant.h: * bytecode/PutByIdStatus.h: * bytecode/PutByIdVariant.h: * bytecode/ValueProfile.h: * dfg/DFGAbstractInterpreter.h: * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::newVariableAccessData): * dfg/DFGFlowIndexing.h: * dfg/DFGFlowMap.h: * dfg/DFGLiveCatchVariablePreservationPhase.cpp: (JSC::DFG::LiveCatchVariablePreservationPhase::newVariableAccessData): * dfg/DFGMaximalFlushInsertionPhase.cpp: (JSC::DFG::MaximalFlushInsertionPhase::newVariableAccessData): * dfg/DFGOSRExit.h: * dfg/DFGSpeculativeJIT.h: * dfg/DFGVariableAccessData.h: * disassembler/ARM64/A64DOpcode.h: * inspector/remote/socket/RemoteInspectorMessageParser.h: * inspector/remote/socket/RemoteInspectorSocket.h: * inspector/remote/socket/RemoteInspectorSocketEndpoint.h: * jit/PCToCodeOriginMap.h: * runtime/BasicBlockLocation.h: * runtime/DoublePredictionFuzzerAgent.h: * runtime/JSRunLoopTimer.h: * runtime/PromiseDeferredTimer.h: (JSC::PromiseDeferredTimer::create): PromiseDeferredTimer should be allocated as `Ref<>` instead of `std::unique_ptr` since it is inheriting ThreadSafeRefCounted<>. Holding such a class with std::unique_ptr could lead to potentially dangerous operations (like, someone holds it with Ref<> while it is deleted by std::unique_ptr<>). * runtime/RandomizingFuzzerAgent.h: * runtime/SymbolTable.h: * runtime/VM.cpp: (JSC::VM::VM): * runtime/VM.h: * tools/JSDollarVM.cpp: * tools/SigillCrashAnalyzer.cpp: * wasm/WasmFormat.h: * wasm/WasmMemory.cpp: * wasm/WasmSignature.h: * yarr/YarrJIT.h: Source/WebCore: Changed the accessor since we changed std::unique_ptr to Ref for this field. No behavior change. * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::addTimerSetNotification): (WebCore::WorkerScriptController::removeTimerSetNotification): Source/WTF: WTF has many data structures, in particular, containers. And these containers can be allocated like `std::make_unique<Container>()`. Without WTF_MAKE_FAST_ALLOCATED, this container itself is allocated from the system malloc. This patch attaches WTF_MAKE_FAST_ALLOCATED more aggressively not to allocate them from the system malloc. And we add some `final` to containers and classes that would be never inherited. * wtf/Assertions.cpp: * wtf/Atomics.h: * wtf/AutodrainedPool.h: * wtf/Bag.h: (WTF::Bag::Bag): Deleted. (WTF::Bag::~Bag): Deleted. (WTF::Bag::clear): Deleted. (WTF::Bag::add): Deleted. (WTF::Bag::iterator::iterator): Deleted. (WTF::Bag::iterator::operator! const): Deleted. (WTF::Bag::iterator::operator* const): Deleted. (WTF::Bag::iterator::operator++): Deleted. (WTF::Bag::iterator::operator== const): Deleted. (WTF::Bag::iterator::operator!= const): Deleted. (WTF::Bag::begin): Deleted. (WTF::Bag::begin const): Deleted. (WTF::Bag::end const): Deleted. (WTF::Bag::isEmpty const): Deleted. (WTF::Bag::unwrappedHead const): Deleted. * wtf/BitVector.h: (WTF::BitVector::BitVector): Deleted. (WTF::BitVector::~BitVector): Deleted. (WTF::BitVector::operator=): Deleted. (WTF::BitVector::size const): Deleted. (WTF::BitVector::ensureSize): Deleted. (WTF::BitVector::quickGet const): Deleted. (WTF::BitVector::quickSet): Deleted. (WTF::BitVector::quickClear): Deleted. (WTF::BitVector::get const): Deleted. (WTF::BitVector::contains const): Deleted. (WTF::BitVector::set): Deleted. (WTF::BitVector::add): Deleted. (WTF::BitVector::ensureSizeAndSet): Deleted. (WTF::BitVector::clear): Deleted. (WTF::BitVector::remove): Deleted. (WTF::BitVector::merge): Deleted. (WTF::BitVector::filter): Deleted. (WTF::BitVector::exclude): Deleted. (WTF::BitVector::bitCount const): Deleted. (WTF::BitVector::isEmpty const): Deleted. (WTF::BitVector::findBit const): Deleted. (WTF::BitVector::isEmptyValue const): Deleted. (WTF::BitVector::isDeletedValue const): Deleted. (WTF::BitVector::isEmptyOrDeletedValue const): Deleted. (WTF::BitVector::operator== const): Deleted. (WTF::BitVector::hash const): Deleted. (WTF::BitVector::iterator::iterator): Deleted. (WTF::BitVector::iterator::operator* const): Deleted. (WTF::BitVector::iterator::operator++): Deleted. (WTF::BitVector::iterator::isAtEnd const): Deleted. (WTF::BitVector::iterator::operator== const): Deleted. (WTF::BitVector::iterator::operator!= const): Deleted. (WTF::BitVector::begin const): Deleted. (WTF::BitVector::end const): Deleted. (WTF::BitVector::bitsInPointer): Deleted. (WTF::BitVector::maxInlineBits): Deleted. (WTF::BitVector::byteCount): Deleted. (WTF::BitVector::makeInlineBits): Deleted. (WTF::BitVector::cleanseInlineBits): Deleted. (WTF::BitVector::bitCount): Deleted. (WTF::BitVector::findBitFast const): Deleted. (WTF::BitVector::findBitSimple const): Deleted. (WTF::BitVector::OutOfLineBits::numBits const): Deleted. (WTF::BitVector::OutOfLineBits::numWords const): Deleted. (WTF::BitVector::OutOfLineBits::bits): Deleted. (WTF::BitVector::OutOfLineBits::bits const): Deleted. (WTF::BitVector::OutOfLineBits::OutOfLineBits): Deleted. (WTF::BitVector::isInline const): Deleted. (WTF::BitVector::outOfLineBits const): Deleted. (WTF::BitVector::outOfLineBits): Deleted. (WTF::BitVector::bits): Deleted. (WTF::BitVector::bits const): Deleted. * wtf/Bitmap.h: (WTF::Bitmap::size): Deleted. (WTF::Bitmap::iterator::iterator): Deleted. (WTF::Bitmap::iterator::operator* const): Deleted. (WTF::Bitmap::iterator::operator++): Deleted. (WTF::Bitmap::iterator::operator== const): Deleted. (WTF::Bitmap::iterator::operator!= const): Deleted. (WTF::Bitmap::begin const): Deleted. (WTF::Bitmap::end const): Deleted. * wtf/Box.h: * wtf/BumpPointerAllocator.h: * wtf/CPUTime.h: * wtf/CheckedBoolean.h: * wtf/CommaPrinter.h: (WTF::CommaPrinter::CommaPrinter): Deleted. (WTF::CommaPrinter::dump const): Deleted. (WTF::CommaPrinter::didPrint const): Deleted. * wtf/CompactPointerTuple.h: (WTF::CompactPointerTuple::encodeType): Deleted. (WTF::CompactPointerTuple::decodeType): Deleted. (WTF::CompactPointerTuple::CompactPointerTuple): Deleted. (WTF::CompactPointerTuple::pointer const): Deleted. (WTF::CompactPointerTuple::setPointer): Deleted. (WTF::CompactPointerTuple::type const): Deleted. (WTF::CompactPointerTuple::setType): Deleted. * wtf/CompilationThread.h: (WTF::CompilationScope::CompilationScope): Deleted. (WTF::CompilationScope::~CompilationScope): Deleted. (WTF::CompilationScope::leaveEarly): Deleted. * wtf/CompletionHandler.h: (WTF::CompletionHandler<Out): (WTF::Detail::CallableWrapper<CompletionHandler<Out): (WTF::CompletionHandlerCallingScope::CompletionHandlerCallingScope): Deleted. (WTF::CompletionHandlerCallingScope::~CompletionHandlerCallingScope): Deleted. (WTF::CompletionHandlerCallingScope::CompletionHandler<void): Deleted. * wtf/ConcurrentBuffer.h: (WTF::ConcurrentBuffer::ConcurrentBuffer): Deleted. (WTF::ConcurrentBuffer::~ConcurrentBuffer): Deleted. (WTF::ConcurrentBuffer::growExact): Deleted. (WTF::ConcurrentBuffer::grow): Deleted. (WTF::ConcurrentBuffer::array const): Deleted. (WTF::ConcurrentBuffer::operator[]): Deleted. (WTF::ConcurrentBuffer::operator[] const): Deleted. (WTF::ConcurrentBuffer::createArray): Deleted. * wtf/ConcurrentPtrHashSet.h: (WTF::ConcurrentPtrHashSet::contains): Deleted. (WTF::ConcurrentPtrHashSet::add): Deleted. (WTF::ConcurrentPtrHashSet::size const): Deleted. (WTF::ConcurrentPtrHashSet::Table::maxLoad const): Deleted. (WTF::ConcurrentPtrHashSet::hash): Deleted. (WTF::ConcurrentPtrHashSet::cast): Deleted. (WTF::ConcurrentPtrHashSet::containsImpl const): Deleted. (WTF::ConcurrentPtrHashSet::addImpl): Deleted. * wtf/ConcurrentVector.h: (WTF::ConcurrentVector::~ConcurrentVector): Deleted. (WTF::ConcurrentVector::size const): Deleted. (WTF::ConcurrentVector::isEmpty const): Deleted. (WTF::ConcurrentVector::at): Deleted. (WTF::ConcurrentVector::at const): Deleted. (WTF::ConcurrentVector::operator[]): Deleted. (WTF::ConcurrentVector::operator[] const): Deleted. (WTF::ConcurrentVector::first): Deleted. (WTF::ConcurrentVector::first const): Deleted. (WTF::ConcurrentVector::last): Deleted. (WTF::ConcurrentVector::last const): Deleted. (WTF::ConcurrentVector::takeLast): Deleted. (WTF::ConcurrentVector::append): Deleted. (WTF::ConcurrentVector::alloc): Deleted. (WTF::ConcurrentVector::removeLast): Deleted. (WTF::ConcurrentVector::grow): Deleted. (WTF::ConcurrentVector::begin): Deleted. (WTF::ConcurrentVector::end): Deleted. (WTF::ConcurrentVector::segmentExistsFor): Deleted. (WTF::ConcurrentVector::segmentFor): Deleted. (WTF::ConcurrentVector::subscriptFor): Deleted. (WTF::ConcurrentVector::ensureSegmentsFor): Deleted. (WTF::ConcurrentVector::ensureSegment): Deleted. (WTF::ConcurrentVector::allocateSegment): Deleted. * wtf/Condition.h: (WTF::Condition::waitUntil): Deleted. (WTF::Condition::waitFor): Deleted. (WTF::Condition::wait): Deleted. (WTF::Condition::notifyOne): Deleted. (WTF::Condition::notifyAll): Deleted. * wtf/CountingLock.h: (WTF::CountingLock::LockHooks::lockHook): Deleted. (WTF::CountingLock::LockHooks::unlockHook): Deleted. (WTF::CountingLock::LockHooks::parkHook): Deleted. (WTF::CountingLock::LockHooks::handoffHook): Deleted. (WTF::CountingLock::tryLock): Deleted. (WTF::CountingLock::lock): Deleted. (WTF::CountingLock::unlock): Deleted. (WTF::CountingLock::isHeld const): Deleted. (WTF::CountingLock::isLocked const): Deleted. (WTF::CountingLock::Count::operator bool const): Deleted. (WTF::CountingLock::Count::operator== const): Deleted. (WTF::CountingLock::Count::operator!= const): Deleted. (WTF::CountingLock::tryOptimisticRead): Deleted. (WTF::CountingLock::validate): Deleted. (WTF::CountingLock::doOptimizedRead): Deleted. (WTF::CountingLock::tryOptimisticFencelessRead): Deleted. (WTF::CountingLock::fencelessValidate): Deleted. (WTF::CountingLock::doOptimizedFencelessRead): Deleted. (WTF::CountingLock::getCount): Deleted. * wtf/CrossThreadQueue.h: * wtf/CrossThreadTask.h: * wtf/CryptographicallyRandomNumber.cpp: * wtf/DataMutex.h: * wtf/DateMath.h: * wtf/Deque.h: (WTF::Deque::size const): Deleted. (WTF::Deque::isEmpty const): Deleted. (WTF::Deque::begin): Deleted. (WTF::Deque::end): Deleted. (WTF::Deque::begin const): Deleted. (WTF::Deque::end const): Deleted. (WTF::Deque::rbegin): Deleted. (WTF::Deque::rend): Deleted. (WTF::Deque::rbegin const): Deleted. (WTF::Deque::rend const): Deleted. (WTF::Deque::first): Deleted. (WTF::Deque::first const): Deleted. (WTF::Deque::last): Deleted. (WTF::Deque::last const): Deleted. (WTF::Deque::append): Deleted. * wtf/Dominators.h: * wtf/DoublyLinkedList.h: * wtf/Expected.h: * wtf/FastBitVector.h: * wtf/FileMetadata.h: * wtf/FileSystem.h: * wtf/GraphNodeWorklist.h: * wtf/GregorianDateTime.h: (WTF::GregorianDateTime::GregorianDateTime): Deleted. (WTF::GregorianDateTime::year const): Deleted. (WTF::GregorianDateTime::month const): Deleted. (WTF::GregorianDateTime::yearDay const): Deleted. (WTF::GregorianDateTime::monthDay const): Deleted. (WTF::GregorianDateTime::weekDay const): Deleted. (WTF::GregorianDateTime::hour const): Deleted. (WTF::GregorianDateTime::minute const): Deleted. (WTF::GregorianDateTime::second const): Deleted. (WTF::GregorianDateTime::utcOffset const): Deleted. (WTF::GregorianDateTime::isDST const): Deleted. (WTF::GregorianDateTime::setYear): Deleted. (WTF::GregorianDateTime::setMonth): Deleted. (WTF::GregorianDateTime::setYearDay): Deleted. (WTF::GregorianDateTime::setMonthDay): Deleted. (WTF::GregorianDateTime::setWeekDay): Deleted. (WTF::GregorianDateTime::setHour): Deleted. (WTF::GregorianDateTime::setMinute): Deleted. (WTF::GregorianDateTime::setSecond): Deleted. (WTF::GregorianDateTime::setUtcOffset): Deleted. (WTF::GregorianDateTime::setIsDST): Deleted. (WTF::GregorianDateTime::operator tm const): Deleted. (WTF::GregorianDateTime::copyFrom): Deleted. * wtf/HashTable.h: * wtf/Hasher.h: * wtf/HexNumber.h: * wtf/Indenter.h: * wtf/IndexMap.h: * wtf/IndexSet.h: * wtf/IndexSparseSet.h: * wtf/IndexedContainerIterator.h: * wtf/Insertion.h: * wtf/IteratorAdaptors.h: * wtf/IteratorRange.h: * wtf/KeyValuePair.h: * wtf/ListHashSet.h: (WTF::ListHashSet::begin): Deleted. (WTF::ListHashSet::end): Deleted. (WTF::ListHashSet::begin const): Deleted. (WTF::ListHashSet::end const): Deleted. (WTF::ListHashSet::random): Deleted. (WTF::ListHashSet::random const): Deleted. (WTF::ListHashSet::rbegin): Deleted. (WTF::ListHashSet::rend): Deleted. (WTF::ListHashSet::rbegin const): Deleted. (WTF::ListHashSet::rend const): Deleted. * wtf/Liveness.h: * wtf/LocklessBag.h: (WTF::LocklessBag::LocklessBag): Deleted. (WTF::LocklessBag::add): Deleted. (WTF::LocklessBag::iterate): Deleted. (WTF::LocklessBag::consumeAll): Deleted. (WTF::LocklessBag::consumeAllWithNode): Deleted. (WTF::LocklessBag::~LocklessBag): Deleted. * wtf/LoggingHashID.h: * wtf/MD5.h: * wtf/MachSendRight.h: * wtf/MainThreadData.h: * wtf/Markable.h: * wtf/MediaTime.h: * wtf/MemoryPressureHandler.h: * wtf/MessageQueue.h: (WTF::MessageQueue::MessageQueue): Deleted. * wtf/MetaAllocator.h: * wtf/MonotonicTime.h: (WTF::MonotonicTime::MonotonicTime): Deleted. (WTF::MonotonicTime::fromRawSeconds): Deleted. (WTF::MonotonicTime::infinity): Deleted. (WTF::MonotonicTime::nan): Deleted. (WTF::MonotonicTime::secondsSinceEpoch const): Deleted. (WTF::MonotonicTime::approximateMonotonicTime const): Deleted. (WTF::MonotonicTime::operator bool const): Deleted. (WTF::MonotonicTime::operator+ const): Deleted. (WTF::MonotonicTime::operator- const): Deleted. (WTF::MonotonicTime::operator% const): Deleted. (WTF::MonotonicTime::operator+=): Deleted. (WTF::MonotonicTime::operator-=): Deleted. (WTF::MonotonicTime::operator== const): Deleted. (WTF::MonotonicTime::operator!= const): Deleted. (WTF::MonotonicTime::operator< const): Deleted. (WTF::MonotonicTime::operator> const): Deleted. (WTF::MonotonicTime::operator<= const): Deleted. (WTF::MonotonicTime::operator>= const): Deleted. (WTF::MonotonicTime::isolatedCopy const): Deleted. (WTF::MonotonicTime::encode const): Deleted. (WTF::MonotonicTime::decode): Deleted. * wtf/NaturalLoops.h: * wtf/NoLock.h: * wtf/OSAllocator.h: * wtf/OptionSet.h: * wtf/Optional.h: * wtf/OrderMaker.h: * wtf/Packed.h: (WTF::alignof): * wtf/PackedIntVector.h: (WTF::PackedIntVector::PackedIntVector): Deleted. (WTF::PackedIntVector::operator=): Deleted. (WTF::PackedIntVector::size const): Deleted. (WTF::PackedIntVector::ensureSize): Deleted. (WTF::PackedIntVector::resize): Deleted. (WTF::PackedIntVector::clearAll): Deleted. (WTF::PackedIntVector::get const): Deleted. (WTF::PackedIntVector::set): Deleted. (WTF::PackedIntVector::mask): Deleted. * wtf/PageBlock.h: * wtf/ParallelJobsOpenMP.h: * wtf/ParkingLot.h: * wtf/PriorityQueue.h: (WTF::PriorityQueue::size const): Deleted. (WTF::PriorityQueue::isEmpty const): Deleted. (WTF::PriorityQueue::enqueue): Deleted. (WTF::PriorityQueue::peek const): Deleted. (WTF::PriorityQueue::dequeue): Deleted. (WTF::PriorityQueue::decreaseKey): Deleted. (WTF::PriorityQueue::increaseKey): Deleted. (WTF::PriorityQueue::begin const): Deleted. (WTF::PriorityQueue::end const): Deleted. (WTF::PriorityQueue::isValidHeap const): Deleted. (WTF::PriorityQueue::parentOf): Deleted. (WTF::PriorityQueue::leftChildOf): Deleted. (WTF::PriorityQueue::rightChildOf): Deleted. (WTF::PriorityQueue::siftUp): Deleted. (WTF::PriorityQueue::siftDown): Deleted. * wtf/RandomDevice.h: * wtf/Range.h: * wtf/RangeSet.h: (WTF::RangeSet::RangeSet): Deleted. (WTF::RangeSet::~RangeSet): Deleted. (WTF::RangeSet::add): Deleted. (WTF::RangeSet::contains const): Deleted. (WTF::RangeSet::overlaps const): Deleted. (WTF::RangeSet::clear): Deleted. (WTF::RangeSet::dump const): Deleted. (WTF::RangeSet::dumpRaw const): Deleted. (WTF::RangeSet::begin const): Deleted. (WTF::RangeSet::end const): Deleted. (WTF::RangeSet::addAll): Deleted. (WTF::RangeSet::compact): Deleted. (WTF::RangeSet::overlapsNonEmpty): Deleted. (WTF::RangeSet::subsumesNonEmpty): Deleted. (WTF::RangeSet::findRange const): Deleted. * wtf/RecursableLambda.h: * wtf/RedBlackTree.h: (WTF::RedBlackTree::Node::successor const): Deleted. (WTF::RedBlackTree::Node::predecessor const): Deleted. (WTF::RedBlackTree::Node::successor): Deleted. (WTF::RedBlackTree::Node::predecessor): Deleted. (WTF::RedBlackTree::Node::reset): Deleted. (WTF::RedBlackTree::Node::parent const): Deleted. (WTF::RedBlackTree::Node::setParent): Deleted. (WTF::RedBlackTree::Node::left const): Deleted. (WTF::RedBlackTree::Node::setLeft): Deleted. (WTF::RedBlackTree::Node::right const): Deleted. (WTF::RedBlackTree::Node::setRight): Deleted. (WTF::RedBlackTree::Node::color const): Deleted. (WTF::RedBlackTree::Node::setColor): Deleted. (WTF::RedBlackTree::RedBlackTree): Deleted. (WTF::RedBlackTree::insert): Deleted. (WTF::RedBlackTree::remove): Deleted. (WTF::RedBlackTree::findExact const): Deleted. (WTF::RedBlackTree::findLeastGreaterThanOrEqual const): Deleted. (WTF::RedBlackTree::findGreatestLessThanOrEqual const): Deleted. (WTF::RedBlackTree::first const): Deleted. (WTF::RedBlackTree::last const): Deleted. (WTF::RedBlackTree::size): Deleted. (WTF::RedBlackTree::isEmpty): Deleted. (WTF::RedBlackTree::treeMinimum): Deleted. (WTF::RedBlackTree::treeMaximum): Deleted. (WTF::RedBlackTree::treeInsert): Deleted. (WTF::RedBlackTree::leftRotate): Deleted. (WTF::RedBlackTree::rightRotate): Deleted. (WTF::RedBlackTree::removeFixup): Deleted. * wtf/ResourceUsage.h: * wtf/RunLoop.cpp: * wtf/RunLoopTimer.h: * wtf/SHA1.h: * wtf/Seconds.h: (WTF::Seconds::Seconds): Deleted. (WTF::Seconds::value const): Deleted. (WTF::Seconds::minutes const): Deleted. (WTF::Seconds::seconds const): Deleted. (WTF::Seconds::milliseconds const): Deleted. (WTF::Seconds::microseconds const): Deleted. (WTF::Seconds::nanoseconds const): Deleted. (WTF::Seconds::minutesAs const): Deleted. (WTF::Seconds::secondsAs const): Deleted. (WTF::Seconds::millisecondsAs const): Deleted. (WTF::Seconds::microsecondsAs const): Deleted. (WTF::Seconds::nanosecondsAs const): Deleted. (WTF::Seconds::fromMinutes): Deleted. (WTF::Seconds::fromHours): Deleted. (WTF::Seconds::fromMilliseconds): Deleted. (WTF::Seconds::fromMicroseconds): Deleted. (WTF::Seconds::fromNanoseconds): Deleted. (WTF::Seconds::infinity): Deleted. (WTF::Seconds::nan): Deleted. (WTF::Seconds::operator bool const): Deleted. (WTF::Seconds::operator+ const): Deleted. (WTF::Seconds::operator- const): Deleted. (WTF::Seconds::operator* const): Deleted. (WTF::Seconds::operator/ const): Deleted. (WTF::Seconds::operator% const): Deleted. (WTF::Seconds::operator+=): Deleted. (WTF::Seconds::operator-=): Deleted. (WTF::Seconds::operator*=): Deleted. (WTF::Seconds::operator/=): Deleted. (WTF::Seconds::operator%=): Deleted. (WTF::Seconds::operator== const): Deleted. (WTF::Seconds::operator!= const): Deleted. (WTF::Seconds::operator< const): Deleted. (WTF::Seconds::operator> const): Deleted. (WTF::Seconds::operator<= const): Deleted. (WTF::Seconds::operator>= const): Deleted. (WTF::Seconds::isolatedCopy const): Deleted. (WTF::Seconds::encode const): Deleted. (WTF::Seconds::decode): Deleted. * wtf/SegmentedVector.h: (WTF::SegmentedVector::~SegmentedVector): Deleted. (WTF::SegmentedVector::size const): Deleted. (WTF::SegmentedVector::isEmpty const): Deleted. (WTF::SegmentedVector::at): Deleted. (WTF::SegmentedVector::at const): Deleted. (WTF::SegmentedVector::operator[]): Deleted. (WTF::SegmentedVector::operator[] const): Deleted. (WTF::SegmentedVector::first): Deleted. (WTF::SegmentedVector::first const): Deleted. (WTF::SegmentedVector::last): Deleted. (WTF::SegmentedVector::last const): Deleted. (WTF::SegmentedVector::takeLast): Deleted. (WTF::SegmentedVector::append): Deleted. (WTF::SegmentedVector::alloc): Deleted. (WTF::SegmentedVector::removeLast): Deleted. (WTF::SegmentedVector::grow): Deleted. (WTF::SegmentedVector::clear): Deleted. (WTF::SegmentedVector::begin): Deleted. (WTF::SegmentedVector::end): Deleted. (WTF::SegmentedVector::shrinkToFit): Deleted. (WTF::SegmentedVector::deleteAllSegments): Deleted. (WTF::SegmentedVector::segmentExistsFor): Deleted. (WTF::SegmentedVector::segmentFor): Deleted. (WTF::SegmentedVector::subscriptFor): Deleted. (WTF::SegmentedVector::ensureSegmentsFor): Deleted. (WTF::SegmentedVector::ensureSegment): Deleted. (WTF::SegmentedVector::allocateSegment): Deleted. * wtf/SetForScope.h: * wtf/SingleRootGraph.h: * wtf/SinglyLinkedList.h: * wtf/SmallPtrSet.h: * wtf/SpanningTree.h: * wtf/Spectrum.h: * wtf/StackBounds.h: * wtf/StackShot.h: * wtf/StackShotProfiler.h: * wtf/StackStats.h: * wtf/StackTrace.h: * wtf/StreamBuffer.h: * wtf/SynchronizedFixedQueue.h: (WTF::SynchronizedFixedQueue::create): Deleted. (WTF::SynchronizedFixedQueue::open): Deleted. (WTF::SynchronizedFixedQueue::close): Deleted. (WTF::SynchronizedFixedQueue::isOpen): Deleted. (WTF::SynchronizedFixedQueue::enqueue): Deleted. (WTF::SynchronizedFixedQueue::dequeue): Deleted. (WTF::SynchronizedFixedQueue::SynchronizedFixedQueue): Deleted. * wtf/SystemTracing.h: * wtf/ThreadGroup.h: (WTF::ThreadGroup::create): Deleted. (WTF::ThreadGroup::threads const): Deleted. (WTF::ThreadGroup::getLock): Deleted. (WTF::ThreadGroup::weakFromThis): Deleted. * wtf/ThreadSpecific.h: * wtf/ThreadingPrimitives.h: (WTF::Mutex::impl): Deleted. * wtf/TimeWithDynamicClockType.h: (WTF::TimeWithDynamicClockType::TimeWithDynamicClockType): Deleted. (WTF::TimeWithDynamicClockType::fromRawSeconds): Deleted. (WTF::TimeWithDynamicClockType::secondsSinceEpoch const): Deleted. (WTF::TimeWithDynamicClockType::clockType const): Deleted. (WTF::TimeWithDynamicClockType::withSameClockAndRawSeconds const): Deleted. (WTF::TimeWithDynamicClockType::operator bool const): Deleted. (WTF::TimeWithDynamicClockType::operator+ const): Deleted. (WTF::TimeWithDynamicClockType::operator- const): Deleted. (WTF::TimeWithDynamicClockType::operator+=): Deleted. (WTF::TimeWithDynamicClockType::operator-=): Deleted. (WTF::TimeWithDynamicClockType::operator== const): Deleted. (WTF::TimeWithDynamicClockType::operator!= const): Deleted. * wtf/TimingScope.h: * wtf/TinyLRUCache.h: * wtf/TinyPtrSet.h: * wtf/URLParser.cpp: * wtf/URLParser.h: * wtf/Unexpected.h: * wtf/Variant.h: * wtf/WTFSemaphore.h: (WTF::Semaphore::Semaphore): Deleted. (WTF::Semaphore::signal): Deleted. (WTF::Semaphore::waitUntil): Deleted. (WTF::Semaphore::waitFor): Deleted. (WTF::Semaphore::wait): Deleted. * wtf/WallTime.h: (WTF::WallTime::WallTime): Deleted. (WTF::WallTime::fromRawSeconds): Deleted. (WTF::WallTime::infinity): Deleted. (WTF::WallTime::nan): Deleted. (WTF::WallTime::secondsSinceEpoch const): Deleted. (WTF::WallTime::approximateWallTime const): Deleted. (WTF::WallTime::operator bool const): Deleted. (WTF::WallTime::operator+ const): Deleted. (WTF::WallTime::operator- const): Deleted. (WTF::WallTime::operator+=): Deleted. (WTF::WallTime::operator-=): Deleted. (WTF::WallTime::operator== const): Deleted. (WTF::WallTime::operator!= const): Deleted. (WTF::WallTime::operator< const): Deleted. (WTF::WallTime::operator> const): Deleted. (WTF::WallTime::operator<= const): Deleted. (WTF::WallTime::operator>= const): Deleted. (WTF::WallTime::isolatedCopy const): Deleted. * wtf/WeakHashSet.h: (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::get const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator* const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator-> const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator++): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator== const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator!= const): Deleted. (WTF::WeakHashSet::WeakHashSet): Deleted. (WTF::WeakHashSet::begin const): Deleted. (WTF::WeakHashSet::end const): Deleted. (WTF::WeakHashSet::add): Deleted. (WTF::WeakHashSet::remove): Deleted. (WTF::WeakHashSet::contains const): Deleted. (WTF::WeakHashSet::capacity const): Deleted. (WTF::WeakHashSet::computesEmpty const): Deleted. (WTF::WeakHashSet::hasNullReferences const): Deleted. (WTF::WeakHashSet::computeSize const): Deleted. (WTF::WeakHashSet::checkConsistency const): Deleted. * wtf/WeakRandom.h: (WTF::WeakRandom::WeakRandom): Deleted. (WTF::WeakRandom::setSeed): Deleted. (WTF::WeakRandom::seed const): Deleted. (WTF::WeakRandom::get): Deleted. (WTF::WeakRandom::getUint32): Deleted. (WTF::WeakRandom::lowOffset): Deleted. (WTF::WeakRandom::highOffset): Deleted. (WTF::WeakRandom::nextState): Deleted. (WTF::WeakRandom::generate): Deleted. (WTF::WeakRandom::advance): Deleted. * wtf/WordLock.h: (WTF::WordLock::lock): Deleted. (WTF::WordLock::unlock): Deleted. (WTF::WordLock::isHeld const): Deleted. (WTF::WordLock::isLocked const): Deleted. (WTF::WordLock::isFullyReset const): Deleted. * wtf/generic/MainThreadGeneric.cpp: * wtf/glib/GMutexLocker.h: * wtf/linux/CurrentProcessMemoryStatus.h: * wtf/posix/ThreadingPOSIX.cpp: (WTF::Semaphore::Semaphore): Deleted. (WTF::Semaphore::~Semaphore): Deleted. (WTF::Semaphore::wait): Deleted. (WTF::Semaphore::post): Deleted. * wtf/text/ASCIILiteral.h: (WTF::ASCIILiteral::operator const char* const): Deleted. (WTF::ASCIILiteral::fromLiteralUnsafe): Deleted. (WTF::ASCIILiteral::null): Deleted. (WTF::ASCIILiteral::characters const): Deleted. (WTF::ASCIILiteral::ASCIILiteral): Deleted. * wtf/text/AtomString.h: (WTF::AtomString::operator=): Deleted. (WTF::AtomString::isHashTableDeletedValue const): Deleted. (WTF::AtomString::existingHash const): Deleted. (WTF::AtomString::operator const String& const): Deleted. (WTF::AtomString::string const): Deleted. (WTF::AtomString::impl const): Deleted. (WTF::AtomString::is8Bit const): Deleted. (WTF::AtomString::characters8 const): Deleted. (WTF::AtomString::characters16 const): Deleted. (WTF::AtomString::length const): Deleted. (WTF::AtomString::operator[] const): Deleted. (WTF::AtomString::contains const): Deleted. (WTF::AtomString::containsIgnoringASCIICase const): Deleted. (WTF::AtomString::find const): Deleted. (WTF::AtomString::findIgnoringASCIICase const): Deleted. (WTF::AtomString::startsWith const): Deleted. (WTF::AtomString::startsWithIgnoringASCIICase const): Deleted. (WTF::AtomString::endsWith const): Deleted. (WTF::AtomString::endsWithIgnoringASCIICase const): Deleted. (WTF::AtomString::toInt const): Deleted. (WTF::AtomString::toDouble const): Deleted. (WTF::AtomString::toFloat const): Deleted. (WTF::AtomString::percentage const): Deleted. (WTF::AtomString::isNull const): Deleted. (WTF::AtomString::isEmpty const): Deleted. (WTF::AtomString::operator NSString * const): Deleted. * wtf/text/AtomStringImpl.h: (WTF::AtomStringImpl::lookUp): Deleted. (WTF::AtomStringImpl::add): Deleted. (WTF::AtomStringImpl::addWithStringTableProvider): Deleted. * wtf/text/CString.h: (WTF::CStringBuffer::data): Deleted. (WTF::CStringBuffer::length const): Deleted. (WTF::CStringBuffer::CStringBuffer): Deleted. (WTF::CStringBuffer::mutableData): Deleted. (WTF::CString::CString): Deleted. (WTF::CString::data const): Deleted. (WTF::CString::length const): Deleted. (WTF::CString::isNull const): Deleted. (WTF::CString::buffer const): Deleted. (WTF::CString::isHashTableDeletedValue const): Deleted. * wtf/text/ExternalStringImpl.h: (WTF::ExternalStringImpl::freeExternalBuffer): Deleted. * wtf/text/LineBreakIteratorPoolICU.h: * wtf/text/NullTextBreakIterator.h: * wtf/text/OrdinalNumber.h: * wtf/text/StringBuffer.h: * wtf/text/StringBuilder.h: * wtf/text/StringConcatenateNumbers.h: * wtf/text/StringHasher.h: * wtf/text/StringImpl.h: * wtf/text/StringView.cpp: * wtf/text/StringView.h: (WTF::StringView::left const): Deleted. (WTF::StringView::right const): Deleted. (WTF::StringView::underlyingStringIsValid const): Deleted. (WTF::StringView::setUnderlyingString): Deleted. * wtf/text/SymbolImpl.h: (WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl): Deleted. (WTF::SymbolImpl::StaticSymbolImpl::operator SymbolImpl&): Deleted. (WTF::PrivateSymbolImpl::PrivateSymbolImpl): Deleted. (WTF::RegisteredSymbolImpl::symbolRegistry const): Deleted. (WTF::RegisteredSymbolImpl::clearSymbolRegistry): Deleted. (WTF::RegisteredSymbolImpl::RegisteredSymbolImpl): Deleted. * wtf/text/SymbolRegistry.h: * wtf/text/TextBreakIterator.h: * wtf/text/TextPosition.h: * wtf/text/TextStream.h: * wtf/text/WTFString.h: (WTF::String::swap): Deleted. (WTF::String::adopt): Deleted. (WTF::String::isNull const): Deleted. (WTF::String::isEmpty const): Deleted. (WTF::String::impl const): Deleted. (WTF::String::releaseImpl): Deleted. (WTF::String::length const): Deleted. (WTF::String::characters8 const): Deleted. (WTF::String::characters16 const): Deleted. (WTF::String::is8Bit const): Deleted. (WTF::String::sizeInBytes const): Deleted. (WTF::String::operator[] const): Deleted. (WTF::String::find const): Deleted. (WTF::String::findIgnoringASCIICase const): Deleted. (WTF::String::reverseFind const): Deleted. (WTF::String::contains const): Deleted. (WTF::String::containsIgnoringASCIICase const): Deleted. (WTF::String::startsWith const): Deleted. (WTF::String::startsWithIgnoringASCIICase const): Deleted. (WTF::String::hasInfixStartingAt const): Deleted. (WTF::String::endsWith const): Deleted. (WTF::String::endsWithIgnoringASCIICase const): Deleted. (WTF::String::hasInfixEndingAt const): Deleted. (WTF::String::append): Deleted. (WTF::String::left const): Deleted. (WTF::String::right const): Deleted. (WTF::String::createUninitialized): Deleted. (WTF::String::fromUTF8WithLatin1Fallback): Deleted. (WTF::String::isAllASCII const): Deleted. (WTF::String::isAllLatin1 const): Deleted. (WTF::String::isSpecialCharacter const): Deleted. (WTF::String::isHashTableDeletedValue const): Deleted. (WTF::String::hash const): Deleted. (WTF::String::existingHash const): Deleted. * wtf/text/cf/TextBreakIteratorCF.h: * wtf/text/icu/TextBreakIteratorICU.h: * wtf/text/icu/UTextProviderLatin1.h: * wtf/threads/BinarySemaphore.h: (WTF::BinarySemaphore::waitFor): Deleted. (WTF::BinarySemaphore::wait): Deleted. * wtf/unicode/Collator.h: * wtf/win/GDIObject.h: * wtf/win/PathWalker.h: * wtf/win/Win32Handle.h: Canonical link: https://commits.webkit.org/214396@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248546 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-12 20:57:15 +00:00
WTF_MAKE_FAST_ALLOCATED;
public:
TraceScope(TracePointCode entryCode, TracePointCode exitCode, uint64_t data1 = 0, uint64_t data2 = 0, uint64_t data3 = 0, uint64_t data4 = 0)
: m_exitCode(exitCode)
{
2018-04-17 15:57:32 +00:00
tracePoint(entryCode, data1, data2, data3, data4);
}
Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-06-21 Reviewed by Simon Fraser. Source/WebCore: Add trace points for requestAnimationFrame(). * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::requestAnimationFrameEnabled): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): * dom/ScriptedAnimationController.h: * platform/graphics/ios/DisplayRefreshMonitorIOS.mm: (WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): (WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Source/WebKit2: Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): Source/WTF: Define new trace score codes for requestAnimationFrame(). * wtf/SystemTracing.h: (WTF::TracePoint): (WTF::TraceScope::TraceScope): (WTF::TraceScope::~TraceScope): Tools: Add new plist entries to be used by kdebug_trace() viewing tools. * Tracing/SystemTracePoints.plist: Canonical link: https://commits.webkit.org/177064@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202297 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-21 22:29:57 +00:00
~TraceScope()
{
2018-04-17 15:57:32 +00:00
tracePoint(m_exitCode);
}
private:
TracePointCode m_exitCode;
};
} // namespace WTF
using WTF::TraceScope;
2018-04-17 15:57:32 +00:00
using WTF::tracePoint;
#endif // __cplusplus
[WTF] Add signpost API https://bugs.webkit.org/show_bug.cgi?id=208395 Reviewed by Alex Christensen. We want to start using os_signpost instead of kdebug_trace when emitting performance events, because it is usually cheaper (doesn't require a system call unless the log buffer is full) and allows for richer tracepoints (allows for logging strings as well as integers). To facilitate this, this moves the os_signpost wrappers in NetworkDataTaskCocoa to WTF. Since signposts can contain sensitive strings (like URLs), currently we only enable them on Apple-internal devices when an environment variable is set. Source/WebCore/PAL: * PAL.xcodeproj/project.pbxproj: * pal/PlatformMac.cmake: * spi/darwin/OSVariantSPI.h: Renamed to wtf/spi/darwin/OSVariantSPI.h. Source/WebKit: * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (WebKit::NetworkDataTaskCocoa::didSendData): (WebKit::NetworkDataTaskCocoa::didReceiveChallenge): (WebKit::NetworkDataTaskCocoa::didCompleteWithError): (WebKit::NetworkDataTaskCocoa::didReceiveData): (WebKit::NetworkDataTaskCocoa::didReceiveResponse): (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): (WebKit::NetworkDataTaskCocoa::cancel): (WebKit::NetworkDataTaskCocoa::resume): (signpostLogHandle): Deleted. (signpostsEnabled): Deleted. Source/WTF: * WTF.xcodeproj/project.pbxproj: * wtf/PlatformMac.cmake: * wtf/SystemTracing.h: * wtf/cocoa/SystemTracingCocoa.cpp: Added. (WTFSignpostsEnabled): (WTFSignpostLogHandle): * wtf/spi/darwin/OSVariantSPI.h: Renamed from Source/WebCore/PAL/pal/spi/cocoa/OSVariantSPI.h. Canonical link: https://commits.webkit.org/221415@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257762 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-03 05:14:21 +00:00
#if HAVE(OS_SIGNPOST)
#import <os/signpost.h>
WTF_EXTERN_C_BEGIN
WTF_EXPORT_PRIVATE bool WTFSignpostsEnabled();
WTF_EXPORT_PRIVATE os_log_t WTFSignpostLogHandle();
WTF_EXTERN_C_END
#define WTFEmitSignpost(pointer, name, ...) \
WTFEmitSignpostWithFunction(os_signpost_event_emit, (pointer), name, ##__VA_ARGS__)
#define WTFBeginSignpost(pointer, name, ...) \
WTFEmitSignpostWithFunction(os_signpost_interval_begin, (pointer), name, ##__VA_ARGS__)
#define WTFEndSignpost(pointer, name, ...) \
WTFEmitSignpostWithFunction(os_signpost_interval_end, (pointer), name, ##__VA_ARGS__)
#define WTFEmitSignpostWithFunction(emitFunc, pointer, name, ...) \
do { \
if (UNLIKELY(WTFSignpostsEnabled())) { \
os_log_t handle = WTFSignpostLogHandle(); \
os_signpost_id_t signpostID = os_signpost_id_make_with_pointer(handle, (pointer)); \
emitFunc(handle, signpostID, name, ##__VA_ARGS__); \
} \
} while (0)
#else
#define WTFEmitSignpost(pointer, name, ...) do { } while (0)
#define WTFBeginSignpost(pointer, name, ...) do { } while (0)
#define WTFEndSignpost(pointer, name, ...) do { } while (0)
#endif