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

Side by Side Diff: webkit/extensions/v8/heap_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
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/heap_profiler_extension.h"
6
7 #include "base/basictypes.h"
8 #include "v8/include/v8.h"
9
10 #if defined(USE_TCMALLOC) && !defined(OS_WIN)
11 #include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h"
12 #endif
13
14 namespace extensions_v8 {
15
16 namespace {
17
18 const char kHeapProfilerExtensionName[] = "v8/HeapProfiler";
19
20 class HeapProfilerWrapper : public v8::Extension {
21 public:
22 HeapProfilerWrapper()
23 : v8::Extension(kHeapProfilerExtensionName,
24 "if (typeof(chromium) == 'undefined') {"
25 " chromium = {};"
26 "}"
27 "(function() {"
28 " native function HeapProfilerStart();"
29 " native function HeapProfilerStop();"
30 " native function HeapProfilerDump();"
31 " chromium.HeapProfiler = {};"
32 " chromium.HeapProfiler.start = function(opt_prefix) {"
33 " var prefix = opt_prefix;"
34 " if (!prefix) {"
35 " var d = new Date();"
36 " prefix = \"chromium-\" + "
37 " (1900 + d.getYear()) + "
38 " \"-\" + d.getMonth() + "
39 " \"-\" + d.getDay() + "
40 " \"-\" + d.getTime();"
41 " }"
42 " HeapProfilerStart(prefix);"
43 " };"
44 " chromium.HeapProfiler.stop = function() {"
45 " HeapProfilerStop();"
46 " };"
47 " chromium.HeapProfiler.dump = function(opt_reason) {"
48 " HeapProfilerDump(opt_reason || \"\");"
49 " };"
50 "})();") {}
51
52 virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
53 v8::Handle<v8::String> name) {
54 if (name->Equals(v8::String::New("HeapProfilerStart"))) {
55 return v8::FunctionTemplate::New(HeapProfilerStart);
56 } else if (name->Equals(v8::String::New("HeapProfilerStop"))) {
57 return v8::FunctionTemplate::New(HeapProfilerStop);
58 } else if (name->Equals(v8::String::New("HeapProfilerDump"))) {
59 return v8::FunctionTemplate::New(HeapProfilerDump);
60 }
61 return v8::Handle<v8::FunctionTemplate>();
62 }
63
64 #if defined(USE_TCMALLOC) && !defined(OS_WIN)
65 static v8::Handle<v8::Value> HeapProfilerStart(const v8::Arguments& args) {
66 if (args.Length() >= 1 && args[0]->IsString()) {
67 v8::Local<v8::String> js_prefix = args[0]->ToString();
68 char prefix[256];
69 js_prefix->WriteAscii(prefix, 0, arraysize(prefix) - 1);
70 ::HeapProfilerStart(prefix);
71 }
72 return v8::Undefined();
73 }
74
75 static v8::Handle<v8::Value> HeapProfilerStop(const v8::Arguments& args) {
76 ::HeapProfilerStop();
77 return v8::Undefined();
78 }
79
80 static v8::Handle<v8::Value> HeapProfilerDump(const v8::Arguments& args) {
81 if (args.Length() >= 1 && args[0]->IsString()) {
82 v8::Local<v8::String> js_reason = args[0]->ToString();
83 char reason[256];
84 js_reason->WriteAscii(reason, 0, arraysize(reason) - 1);
85 ::HeapProfilerDump(reason);
86 }
87 return v8::Undefined();
88 }
89
90 #else
91
92 static v8::Handle<v8::Value> HeapProfilerStart(const v8::Arguments& args) {
93 return v8::Undefined();
94 }
95
96 static v8::Handle<v8::Value> HeapProfilerStop(const v8::Arguments& args) {
97 return v8::Undefined();
98 }
99
100 static v8::Handle<v8::Value> HeapProfilerDump(const v8::Arguments& args) {
101 return v8::Undefined();
102 }
103 #endif
104 };
105
106 } // namespace
107
108 v8::Extension* HeapProfilerExtension::Get() {
109 return new HeapProfilerWrapper;
110 }
111
112 } // namespace extensions_v8
OLDNEW
« no previous file with comments | « webkit/extensions/v8/heap_profiler_extension.h ('k') | webkit/extensions/v8/playback_extension.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698