summaryrefslogtreecommitdiffstats
path: root/webkit/glue
diff options
context:
space:
mode:
authorharaken@chromium.org <haraken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-05 12:38:28 +0000
committerharaken@chromium.org <haraken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-05 12:38:28 +0000
commit95046339c81e410b8b82f0712a6200e8f4f6f1b0 (patch)
treead7d95b1560eb6ab55087a9c80c3f3df5e9f0dfe /webkit/glue
parent8a54917ce1808acf116b9a2ccd84ee9d58d1c06a (diff)
downloadchromium_src-95046339c81e410b8b82f0712a6200e8f4f6f1b0.zip
chromium_src-95046339c81e410b8b82f0712a6200e8f4f6f1b0.tar.gz
chromium_src-95046339c81e410b8b82f0712a6200e8f4f6f1b0.tar.bz2
Expose global state variables for sampling tracing to WebKit
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. In this issue, we make a Chromium side change to implement a WebKit API to get the addresses of the global states. The WebKit patch is here: https://bugs.webkit.org/show_bug.cgi?id=110932 Review URL: https://chromiumcodereview.appspot.com/12316146 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186162 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r--webkit/glue/webkitplatformsupport_impl.cc16
-rw-r--r--webkit/glue/webkitplatformsupport_impl.h2
2 files changed, 17 insertions, 1 deletions
diff --git a/webkit/glue/webkitplatformsupport_impl.cc b/webkit/glue/webkitplatformsupport_impl.cc
index 34e63d2..0064ce9 100644
--- a/webkit/glue/webkitplatformsupport_impl.cc
+++ b/webkit/glue/webkitplatformsupport_impl.cc
@@ -10,7 +10,6 @@
#include "base/allocator/allocator_extension.h"
#include "base/bind.h"
-#include "base/debug/trace_event.h"
#include "base/memory/discardable_memory.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
@@ -453,6 +452,21 @@ const unsigned char* WebKitPlatformSupportImpl::getTraceCategoryEnabledFlag(
return TRACE_EVENT_API_GET_CATEGORY_ENABLED(category_name);
}
+long* WebKitPlatformSupportImpl::getTraceSamplingState(
+ const unsigned thread_bucket) {
+ switch(thread_bucket) {
+ case 0:
+ return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(0));
+ case 1:
+ return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(1));
+ case 2:
+ return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(2));
+ default:
+ NOTREACHED() << "Unknown thread bucket type.";
+ }
+ return NULL;
+}
+
void WebKitPlatformSupportImpl::addTraceEvent(
char phase,
const unsigned char* category_enabled,
diff --git a/webkit/glue/webkitplatformsupport_impl.h b/webkit/glue/webkitplatformsupport_impl.h
index 859309e..0f77447 100644
--- a/webkit/glue/webkitplatformsupport_impl.h
+++ b/webkit/glue/webkitplatformsupport_impl.h
@@ -6,6 +6,7 @@
#define WEBKIT_PLATFORM_SUPPORT_IMPL_H_
#include "base/compiler_specific.h"
+#include "base/debug/trace_event.h"
#include "base/platform_file.h"
#include "base/threading/thread_local_storage.h"
#include "base/timer.h"
@@ -88,6 +89,7 @@ class WEBKIT_GLUE_EXPORT WebKitPlatformSupportImpl :
const char* name, int sample, int boundary_value);
virtual const unsigned char* getTraceCategoryEnabledFlag(
const char* category_name);
+ virtual long* getTraceSamplingState(const unsigned thread_bucket);
virtual void addTraceEvent(
char phase,
const unsigned char* category_enabled,