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

Unified Diff: webkit/glue/devtools/js/profiler_agent.js

Issue 467043: Revert 34040 - DevTools: make possible profiling of scripts doing heavy calcu... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years 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 | « webkit/glue/devtools/js/inspector_controller_impl.js ('k') | webkit/glue/devtools/js/tests.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/devtools/js/profiler_agent.js
===================================================================
--- webkit/glue/devtools/js/profiler_agent.js (revision 34040)
+++ webkit/glue/devtools/js/profiler_agent.js (working copy)
@@ -1,191 +0,0 @@
-// Copyright (c) 2009 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.
-
-/**
- * @fileoverview Provides communication interface to remote v8 profiler.
- */
-goog.provide('devtools.ProfilerAgent');
-
-/**
- * @constructor
- */
-devtools.ProfilerAgent = function() {
- RemoteProfilerAgent.DidGetActiveProfilerModules =
- goog.bind(this.didGetActiveProfilerModules_, this);
- RemoteProfilerAgent.DidGetLogLines =
- goog.bind(this.didGetLogLines_, this);
-
- /**
- * Active profiler modules flags.
- * @type {number}
- */
- this.activeProfilerModules_ =
- devtools.ProfilerAgent.ProfilerModules.PROFILER_MODULE_NONE;
-
- /**
- * Interval for polling profiler state.
- * @type {number}
- */
- this.getActiveProfilerModulesInterval_ = null;
-
- /**
- * Profiler log position.
- * @type {number}
- */
- this.logPosition_ = 0;
-
- /**
- * Whether log contents retrieval must be forced next time.
- * @type {boolean}
- */
- this.forceGetLogLines_ = false;
-
- /**
- * Profiler processor instance.
- * @type {devtools.profiler.Processor}
- */
- this.profilerProcessor_ = new devtools.profiler.Processor();
-};
-
-
-/**
- * A copy of enum from include/v8.h
- * @enum {number}
- */
-devtools.ProfilerAgent.ProfilerModules = {
- PROFILER_MODULE_NONE: 0,
- PROFILER_MODULE_CPU: 1,
- PROFILER_MODULE_HEAP_STATS: 1 << 1,
- PROFILER_MODULE_JS_CONSTRUCTORS: 1 << 2,
- PROFILER_MODULE_HEAP_SNAPSHOT: 1 << 16
-};
-
-
-/**
- * Resets profiler agent to its initial state.
- */
-devtools.ProfilerAgent.prototype.reset = function() {
- this.logPosition_ = 0;
- this.activeProfilerModules_ =
- devtools.ProfilerAgent.ProfilerModules.PROFILER_MODULE_NONE;
-};
-
-
-/**
- * Sets up callbacks that deal with profiles processing.
- */
-devtools.ProfilerAgent.prototype.setupProfilerProcessorCallbacks = function() {
- // A temporary icon indicating that the profile is being processed.
- var processingIcon = new WebInspector.SidebarTreeElement(
- 'profile-sidebar-tree-item',
- WebInspector.UIString('Processing...'),
- '', null, false);
- var profilesSidebar = WebInspector.panels.profiles.getProfileType(
- WebInspector.CPUProfileType.TypeId).treeElement;
-
- this.profilerProcessor_.setCallbacks(
- function onProfileProcessingStarted() {
- // Set visually empty string. Subtitle hiding is done via styles
- // manipulation which doesn't play well with dynamic append / removal.
- processingIcon.subtitle = ' ';
- profilesSidebar.appendChild(processingIcon);
- },
- function onProfileProcessingStatus(ticksCount) {
- processingIcon.subtitle =
- WebInspector.UIString('%d ticks processed', ticksCount);
- },
- function onProfileProcessingFinished(profile) {
- profilesSidebar.removeChild(processingIcon);
- profile.typeId = WebInspector.CPUProfileType.TypeId;
- InspectorBackend.addFullProfile(profile);
- WebInspector.addProfileHeader(profile);
- // If no profile is currently shown, show the new one.
- var profilesPanel = WebInspector.panels.profiles;
- if (!profilesPanel.visibleView) {
- profilesPanel.showProfile(profile);
- }
- }
- );
-};
-
-
-/**
- * Initializes profiling state.
- */
-devtools.ProfilerAgent.prototype.initializeProfiling = function() {
- this.setupProfilerProcessorCallbacks();
- this.forceGetLogLines_ = true;
- this.getActiveProfilerModulesInterval_ = setInterval(
- function() { RemoteProfilerAgent.GetActiveProfilerModules(); }, 1000);
-};
-
-
-/**
- * Starts profiling.
- * @param {number} modules List of modules to enable.
- */
-devtools.ProfilerAgent.prototype.startProfiling = function(modules) {
- var cmd = new devtools.DebugCommand('profile', {
- 'modules': modules,
- 'command': 'resume'});
- devtools.DebuggerAgent.sendCommand_(cmd);
- RemoteToolsAgent.ExecuteVoidJavaScript();
- if (modules &
- devtools.ProfilerAgent.ProfilerModules.PROFILER_MODULE_HEAP_SNAPSHOT) {
- var pos = this.logPosition_;
- // Active modules will not change, instead, a snapshot will be logged.
- setTimeout(function() { RemoteProfilerAgent.GetLogLines(pos); }, 500);
- }
-};
-
-
-/**
- * Stops profiling.
- */
-devtools.ProfilerAgent.prototype.stopProfiling = function(modules) {
- var cmd = new devtools.DebugCommand('profile', {
- 'modules': modules,
- 'command': 'pause'});
- devtools.DebuggerAgent.sendCommand_(cmd);
- RemoteToolsAgent.ExecuteVoidJavaScript();
-};
-
-
-/**
- * Handles current profiler status.
- * @param {number} modules List of active (started) modules.
- */
-devtools.ProfilerAgent.prototype.didGetActiveProfilerModules_ = function(
- modules) {
- var profModules = devtools.ProfilerAgent.ProfilerModules;
- var profModuleNone = profModules.PROFILER_MODULE_NONE;
- if (this.forceGetLogLines_ ||
- (modules != profModuleNone &&
- this.activeProfilerModules_ == profModuleNone)) {
- this.forceGetLogLines_ = false;
- // Start to query log data.
- RemoteProfilerAgent.GetLogLines(this.logPosition_);
- }
- this.activeProfilerModules_ = modules;
- // Update buttons.
- WebInspector.setRecordingProfile(modules & profModules.PROFILER_MODULE_CPU);
-};
-
-
-/**
- * Handles a portion of a profiler log retrieved by GetLogLines call.
- * @param {number} pos Current position in log.
- * @param {string} log A portion of profiler log.
- */
-devtools.ProfilerAgent.prototype.didGetLogLines_ = function(pos, log) {
- this.logPosition_ = pos;
- if (log.length > 0) {
- this.profilerProcessor_.processLogChunk(log);
- } else if (this.activeProfilerModules_ ==
- devtools.ProfilerAgent.ProfilerModules.PROFILER_MODULE_NONE) {
- // No new data and profiling is stopped---suspend log reading.
- return;
- }
- setTimeout(function() { RemoteProfilerAgent.GetLogLines(pos); }, 500);
-};
« no previous file with comments | « webkit/glue/devtools/js/inspector_controller_impl.js ('k') | webkit/glue/devtools/js/tests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698