Skip to content
  • haraken@chromium.org's avatar
    [chromium] Implement TRACE_EVENT macros for sampling profiling · 0dd82766
    haraken@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=110932
    
    Reviewed by Adam Barth.
    
    We are implementing TRACE_EVENT macros for sampling profiling.
    It works in the following mechanism:
    
    - Chromium defines global state variables for sampling profiling.
    (i.e. g_trace_state0, g_trace_state1, g_trace_state2 in trace_event.h)
    
    - WebKit gets the addresses of the global state variables at the
    initialization step. (i.e. EventTracer::initialize())
    
    - WebKit updates the global states by using TRACE_EVENT_SAMPLING_STATE()
    macros every time WebKit changes its state. (e.g. DOM attribute
    getters/setters/methods)
    
    - A sampling thread running in Chrome reads the global states
    periodically and visualizes the profiling results into about://tracing.
    
    This patch implements (1) a WebKit API to get the addresses of
    the global states and (2) the TRACE_EVENT_SAMPLING_STATE() macro.
    
    Source/Platform:
    
    * chromium/public/Platform.h:
    (Platform):
    (WebKit::Platform::getTraceSamplingState):
    
    Source/WebCore:
    
    No tests. The sampling profiler is not enabled in Chrome by default.
    I manually inserted TRACE_EVENT_SAMPLING_STATE() macros and
    confirmed that the sampling profiling is working as expected.
    
    * platform/EventTracer.cpp:
    (WebCore::EventTracer::initialize):
    (WebCore::EventTracer::getTraceCategoryEnabledFlag):
    (WebCore):
    * platform/EventTracer.h:
    (WebCore):
    (EventTracer):
    * platform/chromium/EventTracerChromium.cpp:
    (WebCore):
    (WebCore::EventTracer::initialize):
    * platform/chromium/TraceEvent.h:
    
    Source/WebKit/chromium:
    
    * src/WebKit.cpp:
    (WebKit::initializeWithoutV8):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144701 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    0dd82766