Skip to content

Commit 0899f49

Browse files
committed
refactor: table and flame
1 parent 108e0f9 commit 0899f49

File tree

19 files changed

+108
-461
lines changed

19 files changed

+108
-461
lines changed

packages/vscode-js-profile-core/src/common/model.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ export interface INode {
2121
callFrame: Cdp.Runtime.CallFrame;
2222
}
2323

24-
export interface IGraphNode extends INode {
25-
children: { [id: number]: IGraphNode };
24+
export interface ICommonNode extends INode {
25+
children: { [id: number]: ICommonNode };
2626
childrenSize: number;
27-
parent?: IGraphNode;
27+
parent?: ICommonNode;
2828
}
2929

3030
/**

packages/vscode-js-profile-core/src/heap/editorProvider.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ import { openLocation } from '../open-location';
99
import { ProfileCodeLensProvider } from '../profileCodeLensProvider';
1010
import { ReadonlyCustomDocument } from '../readonly-custom-document';
1111
import { reopenWithEditor } from '../reopenWithEditor';
12-
import { buildModel, IProfileModel } from './model';
13-
import { IHeapProfileRaw } from './types';
12+
import { buildModel, IHeapProfileRaw, IProfileModel } from './model';
1413

1514
export class HeapProfileEditorProvider
1615
implements vscode.CustomEditorProvider<ReadonlyCustomDocument<IProfileModel>>
@@ -34,8 +33,8 @@ export class HeapProfileEditorProvider
3433
// TODO: annotations
3534
// const annotations = new ProfileAnnotations();
3635
// const rootPath = document.userData.rootPath;
37-
// for (const location of document.userData.locations) {
38-
// annotations.add(rootPath, location);
36+
// for (const treeNode of document.userData.treeNodes) {
37+
// annotations.add(rootPath, treeNode);
3938
// }
4039

4140
// this.lens.registerLenses(annotations);

packages/vscode-js-profile-core/src/heap/model.ts

+22-7
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import { Protocol as Cdp } from 'devtools-protocol';
66
import { INode } from '../common/model';
7-
import { IHeapProfileRaw } from './types';
87

98
export interface IHeapProfileNode extends INode {
109
selfSize: number;
@@ -17,18 +16,34 @@ export interface ITreeNode extends IHeapProfileNode {
1716
parent?: ITreeNode;
1817
}
1918

19+
/**
20+
* Extra annotations added by js-debug.
21+
*/
22+
export interface IJsDebugAnnotations {
23+
/**
24+
* Workspace root path, if set.
25+
*/
26+
rootPath?: string;
27+
}
28+
29+
export interface IHeapProfileRaw extends Cdp.HeapProfiler.SamplingHeapProfile {
30+
$vscode?: IJsDebugAnnotations;
31+
}
32+
2033
/**
2134
* Data model for the profile.
2235
*/
23-
export type IProfileModel = Cdp.HeapProfiler.SamplingHeapProfile;
36+
export type IProfileModel = Cdp.HeapProfiler.SamplingHeapProfile & {
37+
rootPath?: string;
38+
};
2439

2540
/**
2641
* Computes the model for the given profile.
2742
*/
2843
export const buildModel = (profile: IHeapProfileRaw): IProfileModel => {
29-
return profile;
30-
// return {
31-
// head: profile.head,
32-
// rootPath: profile.$vscode?.rootPath,
33-
// };
44+
return {
45+
head: profile.head,
46+
samples: profile.samples,
47+
rootPath: profile.$vscode?.rootPath,
48+
};
3449
};

packages/vscode-js-profile-core/src/heap/types.ts

-10
This file was deleted.

packages/vscode-js-profile-flame/src/client/cpu/client.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { IReopenWithEditor } from 'vscode-js-profile-core/out/esm/common/types';
1212
import { cpuProfileLayoutFactory } from 'vscode-js-profile-core/out/esm/cpu/layout';
1313
import { IProfileModel } from 'vscode-js-profile-core/out/esm/cpu/model';
1414
import { IQueryResults, PropertyType } from 'vscode-js-profile-core/out/esm/ql';
15-
import styles from './client.css';
15+
import styles from '../common/client.css';
1616
import { FlameGraph } from './flame-graph';
1717
import { buildColumns, buildLeftHeavyColumns, IColumn, LocationAccessor } from './stacks';
1818

packages/vscode-js-profile-flame/src/client/cpu/flame-graph.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import { decimalFormat, getLocationText } from 'vscode-js-profile-core/out/esm/c
99
import { ILocation, IProfileModel } from 'vscode-js-profile-core/out/esm/cpu/model';
1010
import { Constants } from '../common/constants';
1111
import DragHandle from '../common/drag-handle';
12+
import styles from '../common/flame-graph.css';
1213
import StackList from '../common/stack-list';
1314
import { HighlightSource } from '../common/types';
1415
import useFlame from '../common/use-flame';
15-
import styles from './flame-graph.css';
1616
import { IColumn, IColumnLocation } from './stacks';
1717

1818
export interface IBox {

packages/vscode-js-profile-flame/src/client/heap/client.css

-24
This file was deleted.

packages/vscode-js-profile-flame/src/client/heap/client.tsx

+9-9
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ import { ToggleButton } from 'vscode-js-profile-core/out/esm/client/toggle-butto
99
import { usePersistedState } from 'vscode-js-profile-core/out/esm/client/usePersistedState';
1010
import { VsCodeApi } from 'vscode-js-profile-core/out/esm/client/vscodeApi';
1111
import { IReopenWithEditor } from 'vscode-js-profile-core/out/esm/common/types';
12-
import { cpuProfileLayoutFactory } from 'vscode-js-profile-core/out/esm/cpu/layout';
12+
import { heapProfileLayoutFactory } from 'vscode-js-profile-core/out/esm/heap/layout';
1313
import { IProfileModel } from 'vscode-js-profile-core/out/esm/heap/model';
1414
import { IQueryResults, PropertyType } from 'vscode-js-profile-core/out/esm/ql';
15+
import styles from '../common/client.css';
1516
import { IColumn } from '../common/types';
16-
import styles from './client.css';
1717
import { FlameGraph } from './flame-graph';
18-
import { buildColumns, buildLeftHeavyColumns, LocationAccessor } from './stacks';
18+
import { buildColumns, buildLeftHeavyColumns, TreeNodeAccessor } from './stacks';
1919

2020
declare const MODEL: IProfileModel;
2121

@@ -43,7 +43,7 @@ const CloseButton: FunctionComponent = () => {
4343
() =>
4444
vscode.postMessage<IReopenWithEditor>({
4545
type: 'reopenWith',
46-
viewType: 'jsProfileVisualizer.cpuprofile.table',
46+
viewType: 'jsProfileVisualizer.heapprofile.table',
4747
requireExtension: 'ms-vscode.vscode-js-profile-table',
4848
}),
4949
[vscode],
@@ -54,7 +54,7 @@ const CloseButton: FunctionComponent = () => {
5454
);
5555
};
5656

57-
const CpuProfileLayout = cpuProfileLayoutFactory<LocationAccessor>();
57+
const HeapProfileLayout = heapProfileLayoutFactory<TreeNodeAccessor>();
5858

5959
const Root: FunctionComponent = () => {
6060
const [leftHeavy, setLeftHeavy] = usePersistedState('leftHeavy', false);
@@ -77,11 +77,11 @@ const Root: FunctionComponent = () => {
7777
const cols = leftHeavy ? getLeftHeavyCols() : getTimelineCols();
7878

7979
const FlameGraphWrapper: FunctionComponent<{
80-
data: IQueryResults<LocationAccessor>;
80+
data: IQueryResults<TreeNodeAccessor>;
8181
}> = useCallback(
8282
({ data }) => {
8383
const filtered = useMemo(
84-
() => LocationAccessor.getFilteredColumns(cols, data.selectedAndParents),
84+
() => TreeNodeAccessor.getFilteredColumns(cols, data.selectedAndParents),
8585
[data],
8686
);
8787
return <FlameGraph model={MODEL} columns={cols} filtered={filtered} />;
@@ -90,9 +90,9 @@ const Root: FunctionComponent = () => {
9090
);
9191

9292
return (
93-
<CpuProfileLayout
93+
<HeapProfileLayout
9494
data={{
95-
data: LocationAccessor.rootAccessors(cols),
95+
data: TreeNodeAccessor.rootAccessors(cols),
9696
getChildren: n => n.children,
9797
genericMatchStr: n => [n.callFrame.functionName, n.callFrame.url].join(' '),
9898
properties: {

packages/vscode-js-profile-flame/src/client/heap/flame-graph.css

-161
This file was deleted.

0 commit comments

Comments
 (0)