Index: webkit/extensions/v8/profiler_extension.cc |
=================================================================== |
--- webkit/extensions/v8/profiler_extension.cc (revision 0) |
+++ webkit/extensions/v8/profiler_extension.cc (revision 0) |
@@ -0,0 +1,89 @@ |
+// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "config.h" |
+#include "webkit/extensions/v8/profiler_extension.h" |
+ |
+#include "base/profiler.h" |
+ |
+namespace extensions_v8 { |
+ |
+const char* kProfilerExtensionName = "v8/Profiler"; |
+ |
+class ProfilerWrapper : public v8::Extension { |
+ public: |
+ ProfilerWrapper() : |
+ v8::Extension(kProfilerExtensionName, |
+ "if (typeof(chromium) == 'undefined') {" |
+ " chromium = {};" |
+ "}" |
+ "chromium.Profiler = function() {" |
+ " native function ProfilerStart();" |
+ " native function ProfilerStop();" |
+ " native function ProfilerClearData();" |
+ " native function ProfilerSetThreadName();" |
+ " this.start = function() {" |
+ " ProfilerStart();" |
+ " };" |
+ " this.stop = function() {" |
+ " ProfilerStop();" |
+ " };" |
+ " this.clear = function() {" |
+ " ProfilerClearData();" |
+ " };" |
+ " this.setThreadName = function(name) {" |
+ " ProfilerSetThreadName(name);" |
+ " };" |
+ "};") {} |
+ |
+ virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( |
+ v8::Handle<v8::String> name) { |
+ if (name->Equals(v8::String::New("ProfilerStart"))) { |
+ return v8::FunctionTemplate::New(ProfilerStart); |
+ } else if (name->Equals(v8::String::New("ProfilerStop"))) { |
+ return v8::FunctionTemplate::New(ProfilerStop); |
+ } else if (name->Equals(v8::String::New("ProfilerClearData"))) { |
+ return v8::FunctionTemplate::New(ProfilerClearData); |
+ } else if (name->Equals(v8::String::New("ProfilerSetThreadName"))) { |
+ return v8::FunctionTemplate::New(ProfilerSetThreadName); |
+ } |
+ return v8::Handle<v8::FunctionTemplate>(); |
+ } |
+ |
+ static v8::Handle<v8::Value> ProfilerStart( |
+ const v8::Arguments& args) { |
+ base::Profiler::StartRecording(); |
+ return v8::Undefined(); |
+ } |
+ |
+ static v8::Handle<v8::Value> ProfilerStop( |
+ const v8::Arguments& args) { |
+ base::Profiler::StopRecording(); |
+ return v8::Undefined(); |
+ } |
+ |
+ static v8::Handle<v8::Value> ProfilerClearData( |
+ const v8::Arguments& args) { |
+ base::Profiler::ClearData(); |
+ return v8::Undefined(); |
+ } |
+ |
+ static v8::Handle<v8::Value> ProfilerSetThreadName( |
+ const v8::Arguments& args) { |
+ if (args.Length() >= 1 && args[0]->IsString()) { |
+ v8::Local<v8::String> inputString = args[0]->ToString(); |
+ char nameBuffer[256]; |
+ inputString->WriteAscii(nameBuffer, 0, sizeof(nameBuffer)-1); |
+ base::Profiler::SetThreadName(nameBuffer); |
+ } |
+ return v8::Undefined(); |
+ } |
+}; |
+ |
+v8::Extension* ProfilerExtension::Get() { |
+ return new ProfilerWrapper(); |
+} |
+ |
+} // namespace extensions_v8 |
+ |
Property changes on: webkit\extensions\v8\profiler_extension.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |