mirror of
https://github.com/darlinghq/darling-WTF.git
synced 2024-11-23 11:59:47 +00:00
210 lines
6.0 KiB
Objective-C
210 lines
6.0 KiB
Objective-C
/*
|
|
* 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,
|
|
WebAssemblyCompileStart,
|
|
WebAssemblyCompileEnd,
|
|
WebAssemblyExecuteStart,
|
|
WebAssemblyExecuteEnd,
|
|
DumpJITMemoryStart,
|
|
DumpJITMemoryStop,
|
|
|
|
WebCoreRange = 5000,
|
|
MainResourceLoadDidStartProvisional,
|
|
MainResourceLoadDidEnd,
|
|
SubresourceLoadWillStart,
|
|
SubresourceLoadDidEnd,
|
|
FetchCookiesStart,
|
|
FetchCookiesEnd,
|
|
StyleRecalcStart,
|
|
StyleRecalcEnd,
|
|
RenderTreeBuildStart,
|
|
RenderTreeBuildEnd,
|
|
LayoutStart,
|
|
LayoutEnd,
|
|
PaintLayerStart,
|
|
PaintLayerEnd,
|
|
AsyncImageDecodeStart,
|
|
AsyncImageDecodeEnd,
|
|
RAFCallbackStart,
|
|
RAFCallbackEnd,
|
|
MemoryPressureHandlerStart,
|
|
MemoryPressureHandlerEnd,
|
|
UpdateTouchRegionsStart,
|
|
UpdateTouchRegionsEnd,
|
|
DisplayListRecordStart,
|
|
DisplayListRecordEnd,
|
|
DisplayRefreshDispatchingToMainThread,
|
|
ComputeEventRegionsStart,
|
|
ComputeEventRegionsEnd,
|
|
ScheduleRenderingUpdate,
|
|
TriggerRenderingUpdate,
|
|
RenderingUpdateStart,
|
|
RenderingUpdateEnd,
|
|
CompositingUpdateStart,
|
|
CompositingUpdateEnd,
|
|
DispatchTouchEventsStart,
|
|
DispatchTouchEventsEnd,
|
|
ParseHTMLStart,
|
|
ParseHTMLEnd,
|
|
DisplayListReplayStart,
|
|
DisplayListReplayEnd,
|
|
ScrollingThreadRenderUpdateSyncStart,
|
|
ScrollingThreadRenderUpdateSyncEnd,
|
|
ScrollingThreadDisplayDidRefreshStart,
|
|
ScrollingThreadDisplayDidRefreshEnd,
|
|
|
|
WebKitRange = 10000,
|
|
WebHTMLViewPaintStart,
|
|
WebHTMLViewPaintEnd,
|
|
|
|
WebKit2Range = 12000,
|
|
BackingStoreFlushStart,
|
|
BackingStoreFlushEnd,
|
|
BuildTransactionStart,
|
|
BuildTransactionEnd,
|
|
SyncMessageStart,
|
|
SyncMessageEnd,
|
|
SyncTouchEventStart,
|
|
SyncTouchEventEnd,
|
|
InitializeWebProcessStart,
|
|
InitializeWebProcessEnd,
|
|
RenderingUpdateRunLoopObserverStart,
|
|
RenderingUpdateRunLoopObserverEnd,
|
|
LayerTreeFreezeStart,
|
|
LayerTreeFreezeEnd,
|
|
FlushRemoteImageBufferStart,
|
|
FlushRemoteImageBufferEnd,
|
|
|
|
UIProcessRange = 14000,
|
|
CommitLayerTreeStart,
|
|
CommitLayerTreeEnd,
|
|
ProcessLaunchStart,
|
|
ProcessLaunchEnd,
|
|
InitializeSandboxStart,
|
|
InitializeSandboxEnd,
|
|
|
|
GPUProcessRange = 16000,
|
|
WakeUpAndApplyDisplayListStart,
|
|
WakeUpAndApplyDisplayListEnd,
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
|
|
namespace WTF {
|
|
|
|
inline void tracePoint(TracePointCode code, uint64_t data1 = 0, uint64_t data2 = 0, uint64_t data3 = 0, uint64_t data4 = 0)
|
|
{
|
|
#if HAVE(KDEBUG_H)
|
|
kdebug_trace(ARIADNEDBG_CODE(WEBKIT_COMPONENT, code), data1, data2, data3, data4);
|
|
#else
|
|
UNUSED_PARAM(code);
|
|
UNUSED_PARAM(data1);
|
|
UNUSED_PARAM(data2);
|
|
UNUSED_PARAM(data3);
|
|
UNUSED_PARAM(data4);
|
|
#endif
|
|
}
|
|
|
|
class TraceScope {
|
|
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)
|
|
{
|
|
tracePoint(entryCode, data1, data2, data3, data4);
|
|
}
|
|
|
|
~TraceScope()
|
|
{
|
|
tracePoint(m_exitCode);
|
|
}
|
|
|
|
private:
|
|
TracePointCode m_exitCode;
|
|
};
|
|
|
|
} // namespace WTF
|
|
|
|
using WTF::TraceScope;
|
|
using WTF::tracePoint;
|
|
|
|
#endif // __cplusplus
|
|
|
|
#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
|