зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 881ef048e290 (bug 1147945) for causing spammy TypeErrors that make sheriffing real failures difficult.
This commit is contained in:
Родитель
9dbde4045a
Коммит
fcf455a317
|
@ -1432,8 +1432,6 @@ pref("devtools.performance.enabled", true);
|
|||
pref("devtools.performance.memory.sample-probability", "0.05");
|
||||
pref("devtools.performance.memory.max-log-length", 2147483647); // Math.pow(2,31) - 1
|
||||
pref("devtools.performance.timeline.hidden-markers", "[]");
|
||||
pref("devtools.performance.profiler.buffer-size", 10000000);
|
||||
pref("devtools.performance.profiler.sample-frequency-khz", 1);
|
||||
pref("devtools.performance.ui.invert-call-tree", true);
|
||||
pref("devtools.performance.ui.invert-flame-graph", false);
|
||||
pref("devtools.performance.ui.flatten-tree-recursion", true);
|
||||
|
|
|
@ -11,6 +11,7 @@ const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
|
|||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/devtools/Loader.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "promise",
|
||||
"resource://gre/modules/Promise.jsm", "Promise");
|
||||
|
||||
|
@ -24,8 +25,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "DebuggerServer",
|
|||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "DebuggerClient",
|
||||
"resource://gre/modules/devtools/dbg-client.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Task",
|
||||
"resource://gre/modules/Task.jsm");
|
||||
|
||||
const EventEmitter = devtools.require("devtools/toolkit/event-emitter");
|
||||
const Telemetry = devtools.require("devtools/shared/telemetry");
|
||||
|
@ -1219,8 +1218,8 @@ let gDevToolsBrowser = {
|
|||
*/
|
||||
_connectToProfiler: function DT_connectToProfiler(event, toolbox) {
|
||||
let SharedPerformanceUtils = devtools.require("devtools/performance/front");
|
||||
this._performanceConnection = SharedPerformanceUtils.getPerformanceActorsConnection(toolbox.target);
|
||||
this._performanceConnection.open();
|
||||
let connection = SharedPerformanceUtils.getPerformanceActorsConnection(toolbox.target);
|
||||
connection.open();
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -1330,15 +1329,11 @@ let gDevToolsBrowser = {
|
|||
/**
|
||||
* All browser windows have been closed, tidy up remaining objects.
|
||||
*/
|
||||
destroy: Task.async(function*() {
|
||||
destroy: function() {
|
||||
gDevTools.off("toolbox-ready", gDevToolsBrowser._connectToProfiler);
|
||||
Services.prefs.removeObserver("devtools.", gDevToolsBrowser);
|
||||
Services.obs.removeObserver(gDevToolsBrowser.destroy, "quit-application");
|
||||
|
||||
if (this._performanceConnection) {
|
||||
yield this._performanceConnection.destroy();
|
||||
}
|
||||
}),
|
||||
},
|
||||
}
|
||||
|
||||
this.gDevToolsBrowser = gDevToolsBrowser;
|
||||
|
|
|
@ -247,7 +247,7 @@ PerformanceFront.prototype = {
|
|||
startRecording: Task.async(function*(options = {}) {
|
||||
// All actors are started asynchronously over the remote debugging protocol.
|
||||
// Get the corresponding start times from each one of them.
|
||||
let profilerStartTime = yield this._startProfiler(options);
|
||||
let profilerStartTime = yield this._startProfiler();
|
||||
let timelineStartTime = yield this._startTimeline(options);
|
||||
let memoryStartTime = yield this._startMemory(options);
|
||||
|
||||
|
@ -286,7 +286,7 @@ PerformanceFront.prototype = {
|
|||
/**
|
||||
* Starts the profiler actor, if necessary.
|
||||
*/
|
||||
_startProfiler: Task.async(function *(options={}) {
|
||||
_startProfiler: Task.async(function *() {
|
||||
// Start the profiler only if it wasn't already active. The built-in
|
||||
// nsIPerformance module will be kept recording, because it's the same instance
|
||||
// for all targets and interacts with the whole platform, so we don't want
|
||||
|
@ -297,13 +297,10 @@ PerformanceFront.prototype = {
|
|||
return profilerStatus.currentTime;
|
||||
}
|
||||
|
||||
// Translate options from the recording model into profiler-specific
|
||||
// options for the nsIProfiler
|
||||
let profilerOptions = {
|
||||
entries: options.bufferSize,
|
||||
interval: options.sampleFrequency ? (1000 / (options.sampleFrequency * 1000)) : void 0
|
||||
};
|
||||
|
||||
// If this._customProfilerOptions is defined, use those to pass in
|
||||
// to the profiler actor. The profiler actor handles all the defaults
|
||||
// now, so this should only be used for tests.
|
||||
let profilerOptions = this._customProfilerOptions || {};
|
||||
yield this._request("profiler", "startProfiler", profilerOptions);
|
||||
|
||||
this.emit("profiler-activated");
|
||||
|
|
|
@ -26,9 +26,7 @@ const RecordingModel = function (options={}) {
|
|||
withMemory: options.withMemory || false,
|
||||
withAllocations: options.withAllocations || false,
|
||||
allocationsSampleProbability: options.allocationsSampleProbability || 0,
|
||||
allocationsMaxLogLength: options.allocationsMaxLogLength || 0,
|
||||
bufferSize: options.bufferSize || 0,
|
||||
sampleFrequency: options.sampleFrequency || 1
|
||||
allocationsMaxLogLength: options.allocationsMaxLogLength || 0
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -199,9 +199,7 @@ let PerformanceController = {
|
|||
this._nonBooleanPrefs = new ViewHelpers.Prefs("devtools.performance", {
|
||||
"hidden-markers": ["Json", "timeline.hidden-markers"],
|
||||
"memory-sample-probability": ["Float", "memory.sample-probability"],
|
||||
"memory-max-log-length": ["Int", "memory.max-log-length"],
|
||||
"profiler-buffer-size": ["Int", "profiler.buffer-size"],
|
||||
"profiler-sample-frequency": ["Int", "profiler.sample-frequency-khz"]
|
||||
"memory-max-log-length": ["Int", "memory.max-log-length"]
|
||||
});
|
||||
|
||||
this._nonBooleanPrefs.registerObserver();
|
||||
|
@ -292,9 +290,7 @@ let PerformanceController = {
|
|||
withTicks: this.getOption("enable-framerate"),
|
||||
withAllocations: this.getOption("enable-memory"),
|
||||
allocationsSampleProbability: this.getPref("memory-sample-probability"),
|
||||
allocationsMaxLogLength: this.getPref("memory-max-log-length"),
|
||||
bufferSize: this.getPref("profiler-buffer-size"),
|
||||
sampleFrequency: this.getPref("profiler-sample-frequency")
|
||||
allocationsMaxLogLength: this.getPref("memory-max-log-length")
|
||||
});
|
||||
|
||||
this.emit(EVENTS.RECORDING_WILL_START, recording);
|
||||
|
|
|
@ -67,7 +67,6 @@ support-files =
|
|||
[browser_perf-options-enable-memory-02.js]
|
||||
[browser_perf-options-enable-framerate.js]
|
||||
[browser_perf-options-allocations.js]
|
||||
[browser_perf-options-profiler.js]
|
||||
[browser_perf-overview-render-01.js]
|
||||
[browser_perf-overview-render-02.js]
|
||||
[browser_perf-overview-render-03.js]
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
|
||||
/**
|
||||
* Tests that setting the `devtools.performance.profiler.` prefs propagate to the profiler actor.
|
||||
*/
|
||||
function spawnTest () {
|
||||
let { panel } = yield initPerformance(SIMPLE_URL);
|
||||
let { gFront } = panel.panelWin;
|
||||
|
||||
Services.prefs.setIntPref(PROFILER_BUFFER_SIZE_PREF, 1000);
|
||||
Services.prefs.setIntPref(PROFILER_SAMPLE_RATE_PREF, 2);
|
||||
|
||||
yield startRecording(panel);
|
||||
|
||||
let { entries, interval } = yield gFront._request("profiler", "getStartOptions");
|
||||
|
||||
yield stopRecording(panel);
|
||||
|
||||
is(entries, 1000, "profiler entries option is set on profiler");
|
||||
is(interval, 0.5, "profiler interval option is set on profiler");
|
||||
|
||||
yield teardown(panel);
|
||||
finish();
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
|
||||
|
||||
let { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
|
||||
let { Preferences } = Cu.import("resource://gre/modules/Preferences.jsm", {});
|
||||
|
||||
let { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
|
||||
let { Promise } = Cu.import("resource://gre/modules/Promise.jsm", {});
|
||||
let { devtools } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
|
||||
|
@ -25,8 +25,6 @@ const SIMPLE_URL = EXAMPLE_URL + "doc_simple-test.html";
|
|||
|
||||
const MEMORY_SAMPLE_PROB_PREF = "devtools.performance.memory.sample-probability";
|
||||
const MEMORY_MAX_LOG_LEN_PREF = "devtools.performance.memory.max-log-length";
|
||||
const PROFILER_BUFFER_SIZE_PREF = "devtools.performance.profiler.buffer-size";
|
||||
const PROFILER_SAMPLE_RATE_PREF = "devtools.performance.profiler.sample-frequency-khz";
|
||||
|
||||
const FRAMERATE_PREF = "devtools.performance.ui.enable-framerate";
|
||||
const MEMORY_PREF = "devtools.performance.ui.enable-memory";
|
||||
|
@ -52,12 +50,8 @@ let DEFAULT_PREFS = [
|
|||
"devtools.performance.ui.enable-memory",
|
||||
"devtools.performance.ui.enable-framerate",
|
||||
"devtools.performance.ui.show-jit-optimizations",
|
||||
"devtools.performance.memory.sample-probability",
|
||||
"devtools.performance.memory.max-log-length",
|
||||
"devtools.performance.profiler.buffer-size",
|
||||
"devtools.performance.profiler.sample-frequency-khz",
|
||||
].reduce((prefs, pref) => {
|
||||
prefs[pref] = Preferences.get(pref);
|
||||
prefs[pref] = Services.prefs.getBoolPref(pref);
|
||||
return prefs;
|
||||
}, {});
|
||||
|
||||
|
@ -84,7 +78,7 @@ registerCleanupFunction(() => {
|
|||
|
||||
// Rollback any pref changes
|
||||
Object.keys(DEFAULT_PREFS).forEach(pref => {
|
||||
Preferences.set(pref, DEFAULT_PREFS[pref]);
|
||||
Services.prefs.setBoolPref(pref, DEFAULT_PREFS[pref]);
|
||||
});
|
||||
|
||||
// Make sure the profiler module is stopped when the test finishes.
|
||||
|
|
|
@ -7,16 +7,10 @@ const {Cc, Ci, Cu, Cr} = require("chrome");
|
|||
const Services = require("Services");
|
||||
const DevToolsUtils = require("devtools/toolkit/DevToolsUtils.js");
|
||||
|
||||
let DEFAULT_PROFILER_OPTIONS = {
|
||||
// When using the DevTools Performance Tools, this will be overridden
|
||||
// by the pref `devtools.performance.profiler.buffer-size`.
|
||||
entries: Math.pow(10, 7),
|
||||
// When using the DevTools Performance Tools, this will be overridden
|
||||
// by the pref `devtools.performance.profiler.sample-rate-khz`.
|
||||
interval: 1,
|
||||
features: ["js"],
|
||||
threadFilters: ["GeckoMain"]
|
||||
};
|
||||
let DEFAULT_PROFILER_ENTRIES = 10000000;
|
||||
let DEFAULT_PROFILER_INTERVAL = 1;
|
||||
let DEFAULT_PROFILER_FEATURES = ["js"];
|
||||
let DEFAULT_PROFILER_THREADFILTERS = ["GeckoMain"];
|
||||
|
||||
/**
|
||||
* The nsIProfiler is target agnostic and interacts with the whole platform.
|
||||
|
@ -62,14 +56,6 @@ ProfilerActor.prototype = {
|
|||
return { features: nsIProfilerModule.GetFeatures([]) };
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the configuration used that was originally passed in to start up the
|
||||
* profiler. Used for tests, and does not account for others using nsIProfiler.
|
||||
*/
|
||||
onGetStartOptions: function() {
|
||||
return this._profilerStartOptions || {};
|
||||
},
|
||||
|
||||
/**
|
||||
* Starts the nsIProfiler module. Doing so will discard any samples
|
||||
* that might have been accumulated so far.
|
||||
|
@ -80,21 +66,13 @@ ProfilerActor.prototype = {
|
|||
* @param array:string threadFilters [description]
|
||||
*/
|
||||
onStartProfiler: function(request = {}) {
|
||||
let options = this._profilerStartOptions = {
|
||||
entries: request.entries || DEFAULT_PROFILER_OPTIONS.entries,
|
||||
interval: request.interval || DEFAULT_PROFILER_OPTIONS.interval,
|
||||
features: request.features || DEFAULT_PROFILER_OPTIONS.features,
|
||||
threadFilters: request.threadFilters || DEFAULT_PROFILER_OPTIONS.threadFilters,
|
||||
};
|
||||
|
||||
nsIProfilerModule.StartProfiler(
|
||||
options.entries,
|
||||
options.interval,
|
||||
options.features,
|
||||
options.features.length,
|
||||
options.threadFilters,
|
||||
options.threadFilters.length
|
||||
);
|
||||
(request.entries || DEFAULT_PROFILER_ENTRIES),
|
||||
(request.interval || DEFAULT_PROFILER_INTERVAL),
|
||||
(request.features || DEFAULT_PROFILER_FEATURES),
|
||||
(request.features || DEFAULT_PROFILER_FEATURES).length,
|
||||
(request.threadFilters || DEFAULT_PROFILER_THREADFILTERS),
|
||||
(request.threadFilters || DEFAULT_PROFILER_THREADFILTERS).length);
|
||||
|
||||
return { started: true };
|
||||
},
|
||||
|
@ -353,6 +331,5 @@ ProfilerActor.prototype.requestTypes = {
|
|||
"getSharedLibraryInformation": ProfilerActor.prototype.onGetSharedLibraryInformation,
|
||||
"getProfile": ProfilerActor.prototype.onGetProfile,
|
||||
"registerEventNotifications": ProfilerActor.prototype.onRegisterEventNotifications,
|
||||
"unregisterEventNotifications": ProfilerActor.prototype.onUnregisterEventNotifications,
|
||||
"getStartOptions": ProfilerActor.prototype.onGetStartOptions
|
||||
"unregisterEventNotifications": ProfilerActor.prototype.onUnregisterEventNotifications
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче