8ff6a214b1
This adds a first crude version of displaying a flamechart in the system-analyzer. - Basic function types are distinguishable by colors. - Tooltip information is available as well Bug: v8:11835 Change-Id: I87e092f749d4c16aa5017af39df8d2f7bd7e2edd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2928179 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/master@{#74860}
101 lines
2.0 KiB
JavaScript
101 lines
2.0 KiB
JavaScript
// Copyright 2020 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
import {formatBytes} from '../helper.mjs';
|
|
|
|
import {LogEntry} from './log.mjs';
|
|
|
|
export class DeoptLogEntry extends LogEntry {
|
|
constructor(
|
|
type, time, entry, deoptReason, deoptLocation, scriptOffset,
|
|
instructionStart, codeSize, inliningId) {
|
|
super(type, time);
|
|
this._entry = entry;
|
|
this._reason = deoptReason;
|
|
this._location = deoptLocation;
|
|
this._scriptOffset = scriptOffset;
|
|
this._instructionStart = instructionStart;
|
|
this._codeSize = codeSize;
|
|
this._inliningId = inliningId;
|
|
this.fileSourcePosition = undefined;
|
|
}
|
|
|
|
get reason() {
|
|
return this._reason;
|
|
}
|
|
|
|
get location() {
|
|
return this._location;
|
|
}
|
|
|
|
get entry() {
|
|
return this._entry;
|
|
}
|
|
|
|
get functionName() {
|
|
return this._entry.functionName;
|
|
}
|
|
|
|
static get propertyNames() {
|
|
return [
|
|
'type', 'reason', 'functionName', 'sourcePosition',
|
|
'functionSourcePosition', 'script'
|
|
];
|
|
}
|
|
}
|
|
|
|
export class CodeLogEntry extends LogEntry {
|
|
constructor(type, time, kindName, kind, entry) {
|
|
super(type, time);
|
|
this._kind = kind;
|
|
this._kindName = kindName;
|
|
this._entry = entry;
|
|
entry.logEntry = this;
|
|
}
|
|
|
|
get kind() {
|
|
return this._kind;
|
|
}
|
|
|
|
get kindName() {
|
|
return this._kindName;
|
|
}
|
|
|
|
get entry() {
|
|
return this._entry;
|
|
}
|
|
|
|
get functionName() {
|
|
return this._entry.functionName;
|
|
}
|
|
|
|
get size() {
|
|
return this._entry.size;
|
|
}
|
|
|
|
get source() {
|
|
return this._entry?.getSourceCode() ?? '';
|
|
}
|
|
|
|
get code() {
|
|
return this._entry?.source?.disassemble;
|
|
}
|
|
|
|
toString() {
|
|
return `Code(${this.type})`;
|
|
}
|
|
|
|
get toolTipDict() {
|
|
const dict = super.toolTipDict;
|
|
dict.size = formatBytes(dict.size);
|
|
return dict;
|
|
}
|
|
|
|
static get propertyNames() {
|
|
return [
|
|
'functionName', 'sourcePosition', 'kindName', 'size', 'type', 'kind',
|
|
'script', 'source', 'code'
|
|
];
|
|
}
|
|
}
|