[tools][system-analyzer] Use private class fields

This CL aims to clean dead code across the app
and use private class fields for storing private
information.

Bug: v8:10644, v8:10735

Change-Id: I1129104925f230bed922cc76abdb432d536d2111
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2323352
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Zeynep Cankara <zcankara@google.com>
Cr-Commit-Position: refs/heads/master@{#69125}
This commit is contained in:
Zeynep Cankara 2020-07-29 12:41:42 +01:00 committed by Commit Bot
parent 980e224a81
commit f7273dd32c
6 changed files with 46 additions and 54 deletions

View File

@ -8,19 +8,19 @@ import {defineCustomElement, V8CustomElement} from './helper.mjs';
defineCustomElement('ic-panel', (templateText) =>
class ICPanel extends V8CustomElement {
//TODO(zcankara) Entries never set
#entries;
#filteredEntries;
constructor() {
super(templateText);
this.groupKey.addEventListener(
'change', e => this.updateTable(e));
this.$('#filterICTimeBtn').addEventListener(
'click', e => this.handleICTimeFilter(e));
this._noOfItems = 100;
this._startTime = 0;
this._endTime = 0;
}
get entries(){
return this._entries;
return this.#entries;
}
get groupKey() {
@ -44,12 +44,12 @@ defineCustomElement('ic-panel', (templateText) =>
}
set filteredEntries(value){
this._filteredEntries = value;
this.#filteredEntries = value;
this.updateTable();
}
get filteredEntries(){
return this._filteredEntries;
return this.#filteredEntries;
}
updateTable(event) {
@ -91,14 +91,6 @@ defineCustomElement('ic-panel', (templateText) =>
return node
}
set noOfItems(value){
this._noOfItems = value;
}
get noOfItems(){
return this._noOfItems;
}
handleMapClick(e){
this.dispatchEvent(new CustomEvent(
'mapclick', {bubbles: true, composed: true,

View File

@ -21,6 +21,7 @@ function parseState(s) {
}
class IcProcessor extends LogReader {
#profile;
constructor() {
super();
let propertyICParser = [
@ -69,7 +70,7 @@ class IcProcessor extends LogReader {
processor: this.processPropertyIC.bind(this, 'StoreInArrayLiteralIC')
},
});
this.profile_ = new Profile();
this.#profile = new Profile();
this.LoadGlobalIC = 0;
this.StoreGlobalIC = 0;
@ -79,6 +80,9 @@ class IcProcessor extends LogReader {
this.KeyedStoreIC = 0;
this.StoreInArrayLiteralIC = 0;
}
get profile(){
return this.#profile;
}
/**
* @override
*/
@ -125,20 +129,20 @@ class IcProcessor extends LogReader {
if (maybe_func.length) {
let funcAddr = parseInt(maybe_func[0]);
let state = parseState(maybe_func[1]);
this.profile_.addFuncCode(
this.#profile.addFuncCode(
type, name, timestamp, start, size, funcAddr, state);
} else {
this.profile_.addCode(type, name, timestamp, start, size);
this.#profile.addCode(type, name, timestamp, start, size);
}
}
processCodeMove(from, to) {
this.profile_.moveCode(from, to);
this.#profile.moveCode(from, to);
}
processCodeDelete(start) {
this.profile_.deleteCode(start);
this.#profile.deleteCode(start);
}
processFunctionMove(from, to) {
this.profile_.moveFunc(from, to);
this.#profile.moveFunc(from, to);
}
formatName(entry) {
if (!entry) return '<unknown>';
@ -153,7 +157,7 @@ class IcProcessor extends LogReader {
type, pc, time, line, column, old_state, new_state, map, name, modifier,
slow_reason) {
this[type]++;
let entry = this.profile_.findEntry(pc);
let entry = this.#profile.findEntry(pc);
print(
type + ' (' + old_state + '->' + new_state + modifier + ') at ' +
this.formatName(entry) + ':' + line + ':' + column + ' ' + name +
@ -178,12 +182,9 @@ IcProcessor.kProperties = [
class CustomIcProcessor extends IcProcessor {
#timeline = new Timeline();
constructor() {
super();
}
functionName(pc) {
let entry = this.profile_.findEntry(pc);
let entry = this.profile.findEntry(pc);
return this.formatName(entry);
}

View File

@ -6,6 +6,7 @@ import {V8CustomElement, defineCustomElement} from '../helper.mjs';
defineCustomElement('./map-panel/map-transitions', (templateText) =>
class MapTransitions extends V8CustomElement {
#map;
#mapEntries;
constructor() {
super(templateText);
this.transitionView.addEventListener(
@ -72,12 +73,12 @@ defineCustomElement('./map-panel/map-transitions', (templateText) =>
}
set mapEntries(list){
this._mapEntries = list;
this.#mapEntries = list;
this.showMaps();
}
get mapEntries(){
return this._mapEntries;
return this.#mapEntries;
}
addMapAndParentTransitions(map) {

View File

@ -32,6 +32,9 @@ define(Array.prototype, 'last', function() {
// ===========================================================================
class MapProcessor extends LogReader {
#profile = new Profile();
#timeline = new Timeline();
#formatPCRegexp = /(.*):[0-9]+:[0-9]+$/;
constructor() {
super();
this.dispatchTable_ = {
@ -64,9 +67,6 @@ class MapProcessor extends LogReader {
processor: this.processMapDetails
}
};
this.profile_ = new Profile();
this.timeline_ = new Timeline();
this.formatPCRegexp_ = /(.*):[0-9]+:[0-9]+$/;
}
printError(str) {
@ -116,21 +116,21 @@ class MapProcessor extends LogReader {
finalize() {
// TODO(cbruni): print stats;
this.timeline_.transitions = new Map();
this.#timeline.transitions = new Map();
let id = 0;
this.timeline_.forEach(map => {
this.#timeline.forEach(map => {
if (map.isRoot()) id = map.finalizeRootMap(id + 1);
if (map.edge && map.edge.name) {
let edge = map.edge;
let list = this.timeline_.transitions.get(edge.name);
let list = this.#timeline.transitions.get(edge.name);
if (list === undefined) {
this.timeline_.transitions.set(edge.name, [edge]);
this.#timeline.transitions.set(edge.name, [edge]);
} else {
list.push(edge);
}
}
});
return this.timeline_;
return this.#timeline;
}
addEntry(entry) {
@ -156,33 +156,33 @@ class MapProcessor extends LogReader {
if (maybe_func.length) {
let funcAddr = parseInt(maybe_func[0]);
let state = this.parseState(maybe_func[1]);
this.profile_.addFuncCode(
this.#profile.addFuncCode(
type, name, timestamp, start, size, funcAddr, state);
} else {
this.profile_.addCode(type, name, timestamp, start, size);
this.#profile.addCode(type, name, timestamp, start, size);
}
}
processCodeMove(from, to) {
this.profile_.moveCode(from, to);
this.#profile.moveCode(from, to);
}
processCodeDelete(start) {
this.profile_.deleteCode(start);
this.#profile.deleteCode(start);
}
processFunctionMove(from, to) {
this.profile_.moveFunc(from, to);
this.#profile.moveFunc(from, to);
}
formatPC(pc, line, column) {
let entry = this.profile_.findEntry(pc);
let entry = this.#profile.findEntry(pc);
if (!entry) return '<unknown>'
if (entry.type === 'Builtin') {
return entry.name;
}
let name = entry.func.getName();
let array = this.formatPCRegexp_.exec(name);
let array = this.#formatPCRegexp.exec(name);
if (array === null) {
entry = name;
} else {
@ -219,7 +219,7 @@ class MapProcessor extends LogReader {
createMap(id, time) {
let map = new V8Map(id, time);
this.timeline_.push(map);
this.#timeline.push(map);
return map;
}

View File

@ -5,9 +5,10 @@ import {V8CustomElement, defineCustomElement} from './helper.mjs';
defineCustomElement('stats-panel', (templateText) =>
class StatsPanel extends V8CustomElement {
#timeline;
#transitions;
constructor() {
super(templateText);
this.timeline_ = undefined;
}
get stats() {
@ -15,19 +16,20 @@ defineCustomElement('stats-panel', (templateText) =>
}
set timeline(value){
this.timeline_ = value;
//TODO(zcankara) Trigger update
this.#timeline = value;
}
get timeline(){
return this.timeline_;
return this.#timeline;
}
//TODO(zcankare) Depreciate timeline
set transitions(value){
this.transitions_ = value;
this.#transitions = value;
}
get transitions(){
return this.transitions_;
return this.#transitions;
}
filterUniqueTransitions(filter) {
@ -47,7 +49,7 @@ defineCustomElement('stats-panel', (templateText) =>
}
updateGeneralStats() {
console.assert(this.timeline_ !== undefined, "Timeline not set yet!");
console.assert(this.#timeline !== undefined, "Timeline not set yet!");
let pairs = [
['Total', null, e => true],
['Transitions', 'primary', e => e.edge && e.edge.isTransition()],

View File

@ -12,7 +12,6 @@ defineCustomElement('./timeline/timeline-track', (templateText) =>
#nofChunks = 400;
#chunks;
#selectedEntry;
constructor() {
super(templateText);
this.backgroundCanvas = document.createElement('canvas');
@ -77,13 +76,10 @@ defineCustomElement('./timeline/timeline-track', (templateText) =>
unique.set(entry.type, unique.get(entry.type) + 1);
}
}
console.log(unique);
//TODO(zcankara) Update it to make it work without relying on hex colors
this.renderStatsWindow(unique);
}
renderStatsWindow(unique){
//TODO(zcankara) Update legend with colors and entries
let timelineLegendContent = this.timelineLegendContent;
this.removeAllChildren(timelineLegendContent);
let fragment = document.createDocumentFragment();