Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2455)

Unified Diff: chrome/renderer/benchmarking_extension.cc

Issue 23112028: [Telemetry] Add support for capturing V8 object stats to Telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@stats_table_android
Patch Set: Sync Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/perf/measurements/page_cycler.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/benchmarking_extension.cc
diff --git a/chrome/renderer/benchmarking_extension.cc b/chrome/renderer/benchmarking_extension.cc
index b04a306dfe9108fa87cfa3b33df7815357876a0b..a5094ad55899c2ba204988eaa56a31adbf85f968 100644
--- a/chrome/renderer/benchmarking_extension.cc
+++ b/chrome/renderer/benchmarking_extension.cc
@@ -29,6 +29,10 @@ class BenchmarkingWrapper : public v8::Extension {
" native function GetCounter();"
" return GetCounter(name);"
"};"
+ "chrome.benchmarking.counterForRenderer = function(name) {"
+ " native function GetCounterForRenderer();"
+ " return GetCounterForRenderer(name);"
+ "};"
"chrome.benchmarking.isSingleProcess = function() {"
" native function IsSingleProcess();"
" return IsSingleProcess();"
@@ -59,6 +63,8 @@ class BenchmarkingWrapper : public v8::Extension {
v8::Handle<v8::String> name) OVERRIDE {
if (name->Equals(v8::String::New("GetCounter"))) {
return v8::FunctionTemplate::New(GetCounter);
+ } else if (name->Equals(v8::String::New("GetCounterForRenderer"))) {
+ return v8::FunctionTemplate::New(GetCounterForRenderer);
} else if (name->Equals(v8::String::New("IsSingleProcess"))) {
return v8::FunctionTemplate::New(IsSingleProcess);
} else if (name->Equals(v8::String::New("HiResTime"))) {
@@ -68,20 +74,41 @@ class BenchmarkingWrapper : public v8::Extension {
return v8::Handle<v8::FunctionTemplate>();
}
+ /*
+ * Extract the counter name from arguments.
+ */
+ static void ExtractCounterName(
+ const v8::FunctionCallbackInfo<v8::Value>& args,
+ char* name,
+ size_t capacity) {
+ name[0] = 'c';
+ name[1] = ':';
+ args[0]->ToString()->WriteUtf8(&name[2], capacity - 3);
+ }
+
static void GetCounter(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (!args.Length() || !args[0]->IsString() || !base::StatsTable::current())
return;
- // Extract the name argument
char name[256];
- name[0] = 'c';
- name[1] = ':';
- args[0]->ToString()->WriteUtf8(&name[2], sizeof(name) - 3);
-
+ ExtractCounterName(args, name, sizeof(name));
int counter = base::StatsTable::current()->GetCounterValue(name);
args.GetReturnValue().Set(static_cast<int32_t>(counter));
}
+ static void GetCounterForRenderer(
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
+ if (!args.Length() || !args[0]->IsString() || !base::StatsTable::current())
+ return;
+
+ char name[256];
+ ExtractCounterName(args, name, sizeof(name));
+ int counter = base::StatsTable::current()->GetCounterValue(
+ name,
+ base::GetCurrentProcId());
+ args.GetReturnValue().Set(static_cast<int32_t>(counter));
+ }
+
static void IsSingleProcess(const v8::FunctionCallbackInfo<v8::Value>& args) {
args.GetReturnValue().Set(
CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess));
« no previous file with comments | « no previous file | tools/perf/measurements/page_cycler.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698