| 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
|
|
|
|
|