Bug 1544924 - Support filtering individual classes with MOZ_INSTRUMENT_CUSTOM_ELEMENTS;r=aswan

For example, you can do MOZ_INSTRUMENT_CUSTOM_ELEMENTS=MozXULElement,Button
to limit output to classes containing those strings in their name

Differential Revision: https://phabricator.services.mozilla.com/D27800

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Brian Grinstead 2019-04-17 01:12:41 +00:00
Родитель d6bd83e7ed
Коммит 6d157529af
1 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -24,7 +24,7 @@ window.MozElements = MozElements;
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm"); const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
const env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); const env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
const instrumentClasses = !!env.get("MOZ_INSTRUMENT_CUSTOM_ELEMENTS"); const instrumentClasses = env.get("MOZ_INSTRUMENT_CUSTOM_ELEMENTS");
const instrumentedClasses = instrumentClasses ? new Set() : null; const instrumentedClasses = instrumentClasses ? new Set() : null;
const instrumentedBaseClasses = instrumentClasses ? new WeakSet() : null; const instrumentedBaseClasses = instrumentClasses ? new WeakSet() : null;
@ -46,8 +46,11 @@ MozElements.printInstrumentation = function(collapsed) {
let totalCalls = 0; let totalCalls = 0;
let totalTime = 0; let totalTime = 0;
for (let c of instrumentedClasses) { for (let c of instrumentedClasses) {
// Allow passing in something like MOZ_INSTRUMENT_CUSTOM_ELEMENTS=MozXULElement,Button to filter
let includeClass = instrumentClasses == 1 ||
instrumentClasses.split(",").some(n => c.name.toLowerCase().includes(n.toLowerCase()));
let summary = c.__instrumentation_summary; let summary = c.__instrumentation_summary;
if (summary) { if (includeClass && summary) {
summaries.push(summary); summaries.push(summary);
totalCalls += summary.totalCalls; totalCalls += summary.totalCalls;
totalTime += summary.totalTime; totalTime += summary.totalTime;
@ -94,6 +97,7 @@ function instrumentIndividualClass(c) {
if (instrumentedClasses.has((c))) { if (instrumentedClasses.has((c))) {
return; return;
} }
instrumentedClasses.add((c)); instrumentedClasses.add((c));
let data = { instances: 0 }; let data = { instances: 0 };