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

Side by Side Diff: webkit/extensions/v8/profiler_extension.cc

Issue 10117022: Cleanup of v8 extension stuff. Playback extension is only used in chrome, so move it to chrome\rend… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/extensions/v8/profiler_extension.h ('k') | webkit/extensions/webkit_extensions_export.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "webkit/extensions/v8/profiler_extension.h"
6
7 #include "build/build_config.h"
8 #include "v8/include/v8.h"
9
10 #if defined(USE_TCMALLOC) && defined(OS_POSIX) && !defined(OS_MACOSX)
11 #include "third_party/tcmalloc/chromium/src/gperftools/profiler.h"
12 #endif
13
14 const char kProfilerExtensionName[] = "v8/Profiler";
15
16 namespace extensions_v8 {
17
18 class ProfilerWrapper : public v8::Extension {
19 public:
20 ProfilerWrapper() :
21 v8::Extension(kProfilerExtensionName,
22 "if (typeof(chromium) == 'undefined') {"
23 " chromium = {};"
24 "}"
25 "chromium.Profiler = function() {"
26 " native function ProfilerStart();"
27 " native function ProfilerStop();"
28 " native function ProfilerFlush();"
29 " native function ProfilerClearData();"
30 " native function ProfilerSetThreadName();"
31 " this.start = function() {"
32 " ProfilerStart();"
33 " };"
34 " this.stop = function() {"
35 " ProfilerStop();"
36 " };"
37 " this.clear = function() {"
38 " ProfilerClearData();"
39 " };"
40 " this.flush = function() {"
41 " ProfilerFlush();"
42 " };"
43 " this.setThreadName = function(name) {"
44 " ProfilerSetThreadName(name);"
45 " };"
46 "};") {}
47
48 virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
49 v8::Handle<v8::String> name) {
50 if (name->Equals(v8::String::New("ProfilerStart")))
51 return v8::FunctionTemplate::New(ProfilerStart);
52 else if (name->Equals(v8::String::New("ProfilerStop")))
53 return v8::FunctionTemplate::New(ProfilerStop);
54 else if (name->Equals(v8::String::New("ProfilerClearData")))
55 return v8::FunctionTemplate::New(ProfilerClearData);
56 else if (name->Equals(v8::String::New("ProfilerFlush")))
57 return v8::FunctionTemplate::New(ProfilerFlush);
58 else if (name->Equals(v8::String::New("ProfilerSetThreadName")))
59 return v8::FunctionTemplate::New(ProfilerSetThreadName);
60
61 return v8::Handle<v8::FunctionTemplate>();
62 }
63
64 static v8::Handle<v8::Value> ProfilerStart(const v8::Arguments& args) {
65 #if defined(USE_TCMALLOC) && defined(OS_POSIX) && !defined(OS_MACOSX)
66 ::ProfilerStart("chrome-profile");
67 #endif
68 return v8::Undefined();
69 }
70
71 static v8::Handle<v8::Value> ProfilerStop(const v8::Arguments& args) {
72 #if defined(USE_TCMALLOC) && defined(OS_POSIX) && !defined(OS_MACOSX)
73 ::ProfilerStop();
74 #endif
75 return v8::Undefined();
76 }
77
78 static v8::Handle<v8::Value> ProfilerClearData(const v8::Arguments& args) {
79 return v8::Undefined();
80 }
81
82 static v8::Handle<v8::Value> ProfilerFlush(const v8::Arguments& args) {
83 #if defined(USE_TCMALLOC) && defined(OS_POSIX) && !defined(OS_MACOSX)
84 ::ProfilerFlush();
85 #endif
86 return v8::Undefined();
87 }
88
89 static v8::Handle<v8::Value> ProfilerSetThreadName(
90 const v8::Arguments& args) {
91 if (args.Length() >= 1 && args[0]->IsString()) {
92 v8::Local<v8::String> inputString = args[0]->ToString();
93 char nameBuffer[256];
94 inputString->WriteAscii(nameBuffer, 0, sizeof(nameBuffer)-1);
95 }
96 return v8::Undefined();
97 }
98 };
99
100 v8::Extension* ProfilerExtension::Get() {
101 return new ProfilerWrapper();
102 }
103
104 } // namespace extensions_v8
OLDNEW
« no previous file with comments | « webkit/extensions/v8/profiler_extension.h ('k') | webkit/extensions/webkit_extensions_export.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698