Skip to content

Commit a580c09

Browse files
committed
Use const enum for resource types.
1 parent 836a613 commit a580c09

12 files changed

Lines changed: 51 additions & 57 deletions

src/profile-logic/bottom-box.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
import { resourceTypes } from './data-structures';
5+
import { ResourceType } from 'firefox-profiler/types';
66

77
import type {
88
Thread,
@@ -49,7 +49,7 @@ export function getBottomBoxInfoForCallNode(
4949
const sourceIndex = funcTable.source[funcIndex];
5050
const resource = funcTable.resource[funcIndex];
5151
const libIndex =
52-
resource !== -1 && resourceTable.type[resource] === resourceTypes.library
52+
resource !== -1 && resourceTable.type[resource] === ResourceType.Library
5353
? resourceTable.lib[resource]
5454
: null;
5555
const callNodeFramePerStack = getCallNodeFramePerStack(
@@ -152,7 +152,7 @@ export function getBottomBoxInfoForStackFrame(
152152
const sourceIndex = funcTable.source[funcIndex];
153153
const resource = funcTable.resource[funcIndex];
154154
const libIndex =
155-
resource !== -1 && resourceTable.type[resource] === resourceTypes.library
155+
resource !== -1 && resourceTable.type[resource] === ResourceType.Library
156156
? resourceTable.lib[resource]
157157
: null;
158158

src/profile-logic/call-tree.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
getOriginAnnotationForFunc,
88
getCategoryPairLabel,
99
} from './profile-data';
10-
import { resourceTypes } from './data-structures';
1110
import { getFunctionName } from './function-info';
1211
import type {
1312
CategoryList,
@@ -28,6 +27,7 @@ import type {
2827
SelfAndTotal,
2928
BalancedNativeAllocationsTable,
3029
} from 'firefox-profiler/types';
30+
import { ResourceType } from 'firefox-profiler/types';
3131

3232
import ExtensionIcon from '../../res/img/svg/extension.svg';
3333
import { formatCallNodeNumber, formatPercent } from '../utils/format-numbers';
@@ -511,9 +511,9 @@ export class CallTree {
511511
let iconSrc = null;
512512
let icon = null;
513513

514-
if (resourceType === resourceTypes.webhost) {
514+
if (resourceType === ResourceType.Webhost) {
515515
icon = iconSrc = extractFaviconFromLibname(libName);
516-
} else if (resourceType === resourceTypes.addon) {
516+
} else if (resourceType === ResourceType.Addon) {
517517
iconSrc = ExtensionIcon;
518518

519519
const resourceNameIndex =

src/profile-logic/data-structures.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -299,15 +299,6 @@ export function shallowCloneRawMarkerTable(
299299
};
300300
}
301301

302-
export const resourceTypes = {
303-
unknown: 0,
304-
library: 1,
305-
addon: 2,
306-
webhost: 3,
307-
otherhost: 4,
308-
url: 5,
309-
};
310-
311302
export function getEmptyExtensions(): ExtensionTable {
312303
return {
313304
// Important!

src/profile-logic/global-data-collector.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
getEmptyRawStackTable,
1111
getEmptyResourceTable,
1212
getEmptySourceTable,
13-
resourceTypes,
1413
} from './data-structures';
1514

1615
import type {
@@ -33,6 +32,7 @@ import type {
3332
Address,
3433
Bytes,
3534
} from 'firefox-profiler/types';
35+
import { ResourceType } from 'firefox-profiler/types';
3636

3737
/**
3838
* GlobalDataCollector collects data which is global in the processed profile
@@ -163,7 +163,7 @@ export class GlobalDataCollector {
163163
resourceTable.name[resourceIndex] =
164164
this._stringTable.indexForString(name);
165165
resourceTable.host[resourceIndex] = idIndex;
166-
resourceTable.type[resourceIndex] = resourceTypes.addon;
166+
resourceTable.type[resourceIndex] = ResourceType.Addon;
167167
}
168168
}
169169
}
@@ -208,15 +208,15 @@ export class GlobalDataCollector {
208208
this._stringTable.indexForString(origin);
209209
resourceTable.host[resourceIndex] =
210210
this._stringTable.indexForString(host);
211-
resourceTable.type[resourceIndex] = resourceTypes.webhost;
211+
resourceTable.type[resourceIndex] = ResourceType.Webhost;
212212
} else {
213213
// This is a URL, but it doesn't point to something on the web, e.g. a
214214
// chrome url.
215215
resourceTable.lib[resourceIndex] = null;
216216
resourceTable.name[resourceIndex] =
217217
this._stringTable.indexForString(scriptURI);
218218
resourceTable.host[resourceIndex] = null;
219-
resourceTable.type[resourceIndex] = resourceTypes.url;
219+
resourceTable.type[resourceIndex] = ResourceType.Url;
220220
}
221221
return resourceIndex;
222222
}
@@ -236,7 +236,7 @@ export class GlobalDataCollector {
236236
this._libs[libIndex].name
237237
);
238238
resourceTable.host[resourceIndex] = null;
239-
resourceTable.type[resourceIndex] = resourceTypes.library;
239+
resourceTable.type[resourceIndex] = ResourceType.Library;
240240
return resourceIndex;
241241
}
242242

@@ -255,7 +255,7 @@ export class GlobalDataCollector {
255255
resourceTable.lib[resourceIndex] = null;
256256
resourceTable.name[resourceIndex] = libNameStringIndex;
257257
resourceTable.host[resourceIndex] = null;
258-
resourceTable.type[resourceIndex] = resourceTypes.library;
258+
resourceTable.type[resourceIndex] = ResourceType.Library;
259259
return resourceIndex;
260260
}
261261

src/profile-logic/process-profile.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ export function extractFuncsAndResourcesFromFrameLocations(
287287
* address.
288288
* We also associate the address with the library that contains it, and convert the address
289289
* into a library-relative offset. This association is established via the function's
290-
* "resource": The function points to the resource (of type resourceTypes.library), and the
290+
* "resource": The function points to the resource (of type ResourceType.Library), and the
291291
* resource has the index to the library in thread.libs.
292292
* We return the index of the newly-added function, and the address as a library-relative
293293
* offset.

src/profile-logic/processed-profile-versioning.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
*/
1515

1616
import { sortDataTable } from '../utils/data-table-utils';
17-
import { resourceTypes } from './data-structures';
17+
import { ResourceType } from 'firefox-profiler/types';
1818
import { StringTable } from '../utils/string-table';
1919
import { timeCode } from '../utils/time-code';
2020
import { PROCESSED_PROFILE_VERSION } from '../app-logic/constants';
@@ -356,19 +356,19 @@ const _upgraders: {
356356
};
357357
function addLibResource(name: number, lib: number) {
358358
const index = newResourceTable.length++;
359-
newResourceTable.type[index] = resourceTypes.library;
359+
newResourceTable.type[index] = ResourceType.Library;
360360
newResourceTable.name[index] = name;
361361
newResourceTable.lib[index] = lib;
362362
}
363363
function addWebhostResource(origin: number, host: number) {
364364
const index = newResourceTable.length++;
365-
newResourceTable.type[index] = resourceTypes.webhost;
365+
newResourceTable.type[index] = ResourceType.Webhost;
366366
newResourceTable.name[index] = origin;
367367
newResourceTable.host[index] = host;
368368
}
369369
function addUrlResource(url: number) {
370370
const index = newResourceTable.length++;
371-
newResourceTable.type[index] = resourceTypes.url;
371+
newResourceTable.type[index] = ResourceType.Url;
372372
newResourceTable.name[index] = url;
373373
}
374374
const oldResourceToNewResourceMap = new Map();
@@ -378,7 +378,7 @@ const _upgraders: {
378378
resourceIndex < resourceTable.length;
379379
resourceIndex++
380380
) {
381-
if (resourceTable.type[resourceIndex] === resourceTypes.library) {
381+
if (resourceTable.type[resourceIndex] === ResourceType.Library) {
382382
oldResourceToNewResourceMap.set(
383383
resourceIndex,
384384
newResourceTable.length
@@ -387,7 +387,7 @@ const _upgraders: {
387387
resourceTable.name[resourceIndex],
388388
resourceTable.lib[resourceIndex]
389389
);
390-
} else if (resourceTable.type[resourceIndex] === resourceTypes.url) {
390+
} else if (resourceTable.type[resourceIndex] === ResourceType.Url) {
391391
const scriptURI = stringTable.getString(
392392
resourceTable.name[resourceIndex]
393393
);
@@ -1810,7 +1810,7 @@ const _upgraders: {
18101810
continue;
18111811
}
18121812
const resourceType = resourceTable.type[resourceIndex];
1813-
if (resourceType !== resourceTypes.library) {
1813+
if (resourceType !== ResourceType.Library) {
18141814
continue;
18151815
}
18161816
const libIndex = resourceTable.lib[resourceIndex];

src/profile-logic/profile-data.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import memoize from 'memoize-immutable';
66
import MixedTupleMap from 'mixedtuplemap';
77
import { oneLine } from 'common-tags';
88
import {
9-
resourceTypes,
109
getEmptyRawStackTable,
1110
getEmptyCallNodeTable,
1211
shallowCloneFrameTable,
@@ -88,7 +87,6 @@ import type {
8887
CallTreeSummaryStrategy,
8988
EventDelayInfo,
9089
ThreadsKey,
91-
ResourceTypeEnum,
9290
MarkerPayload,
9391
Address,
9492
AddressProof,
@@ -101,7 +99,7 @@ import type {
10199
IndexIntoSourceTable,
102100
TransformOutput,
103101
} from 'firefox-profiler/types';
104-
import { SelectedState } from 'firefox-profiler/types';
102+
import { SelectedState, ResourceType } from 'firefox-profiler/types';
105103
import type { CallNodeInfo, SuffixOrderIndex } from './call-node-info';
106104

107105
/**
@@ -3080,7 +3078,7 @@ export function getThreadProcessDetails(
30803078
function _shouldShowBothOriginAndFileName(
30813079
fileName: string,
30823080
origin: string,
3083-
resourceType: ResourceTypeEnum | null
3081+
resourceType: ResourceType | null
30843082
): boolean {
30853083
// If the origin string is just a URL prefix that's part of the
30863084
// filename, it doesn't add any useful information, so only show
@@ -3091,7 +3089,7 @@ function _shouldShowBothOriginAndFileName(
30913089

30923090
// For native code (resource type "library"), if we have the filename of the
30933091
// source code, only show the filename and not the library name.
3094-
if (resourceType === resourceTypes.library) {
3092+
if (resourceType === ResourceType.Library) {
30953093
return false;
30963094
}
30973095

@@ -3189,10 +3187,10 @@ export function reserveFunctionsForCollapsedResources(
31893187
IndexIntoFuncTable
31903188
>();
31913189
const jsResourceTypes = [
3192-
resourceTypes.addon,
3193-
resourceTypes.url,
3194-
resourceTypes.webhost,
3195-
resourceTypes.otherhost,
3190+
ResourceType.Addon,
3191+
ResourceType.Url,
3192+
ResourceType.Webhost,
3193+
ResourceType.OtherHost,
31963194
];
31973195
for (
31983196
let resourceIndex = 0;
@@ -4060,7 +4058,7 @@ export function findAddressProofForFile(
40604058
return null;
40614059
}
40624060
const resource = funcTable.resource[func];
4063-
if (resourceTable.type[resource] !== resourceTypes.library) {
4061+
if (resourceTable.type[resource] !== ResourceType.Library) {
40644062
return null;
40654063
}
40664064
const libIndex = resourceTable.lib[resource];

src/profile-logic/symbolication.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44
import {
5-
resourceTypes,
65
getEmptyRawStackTable,
76
shallowCloneFuncTable,
87
shallowCloneNativeSymbolTable,
@@ -24,6 +23,7 @@ import type {
2423
CallNodePath,
2524
Lib,
2625
} from 'firefox-profiler/types';
26+
import { ResourceType } from 'firefox-profiler/types';
2727
import type {
2828
AbstractSymbolStore,
2929
AddressResult,
@@ -276,13 +276,13 @@ function getSymbolicationInfo(
276276
resourceIndex++
277277
) {
278278
const resourceType = resourceTable.type[resourceIndex];
279-
if (resourceType !== resourceTypes.library) {
279+
if (resourceType !== ResourceType.Library) {
280280
continue;
281281
}
282282
const libIndex = resourceTable.lib[resourceIndex];
283283
if (libIndex === null) {
284284
// We can get here if we have pre-symbolicated "funcName (in LibraryName)"
285-
// frames. Those get resourceTypes.library but no libIndex.
285+
// frames. Those get ResourceType.Library but no libIndex.
286286
continue;
287287
}
288288
const lib = libs[libIndex];

src/test/store/symbolication.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
} from '../fixtures/example-symbol-table';
1111
import type { ExampleSymbolTable } from '../fixtures/example-symbol-table';
1212
import type { MarkerPayload } from 'firefox-profiler/types';
13+
import { ResourceType } from 'firefox-profiler/types';
1314
import type {
1415
AddressResult,
1516
LibSymbolicationRequest,
@@ -23,10 +24,7 @@ import {
2324
import * as ProfileViewSelectors from '../../selectors/profile';
2425
import { selectedThreadSelectors } from '../../selectors/per-thread';
2526
import { INTERVAL } from 'firefox-profiler/app-logic/constants';
26-
import {
27-
resourceTypes,
28-
getEmptyRawMarkerTable,
29-
} from '../../profile-logic/data-structures';
27+
import { getEmptyRawMarkerTable } from '../../profile-logic/data-structures';
3028
import { doSymbolicateProfile } from '../../actions/receive-profile';
3129
import {
3230
changeSelectedCallNode,
@@ -593,7 +591,7 @@ function _createUnsymbolicatedProfile() {
593591
lib: [libIndex],
594592
name: [stringTable.indexForString('example lib')],
595593
host: [stringTable.indexForString('example host')],
596-
type: [resourceTypes.library],
594+
type: [ResourceType.Library],
597595
};
598596
for (let i = 0; i < profile.shared.funcTable.length; i++) {
599597
profile.shared.funcTable.resource[i] = 0;

src/test/unit/profile-data.test.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import {
2828
getCallNodeFramePerStack,
2929
getTotalNativeSymbolTimingsForCallNode,
3030
} from '../../profile-logic/profile-data';
31-
import { resourceTypes } from '../../profile-logic/data-structures';
3231
import {
3332
createGeckoProfile,
3433
createGeckoProfileWithJsTimings,
@@ -64,7 +63,7 @@ import type {
6463
IndexIntoCategoryList,
6564
IndexIntoNativeSymbolTable,
6665
} from 'firefox-profiler/types';
67-
import { SelectedState } from 'firefox-profiler/types';
66+
import { SelectedState, ResourceType } from 'firefox-profiler/types';
6867

6968
describe('string-table', function () {
7069
const u = StringTable.withBackingArray(['foo', 'bar', 'baz']);
@@ -343,10 +342,10 @@ describe('process-profile', function () {
343342
it('should create one resource per used library', function () {
344343
const shared = profile.shared;
345344
expect(shared.resourceTable.length).toEqual(4);
346-
expect(shared.resourceTable.type[0]).toEqual(resourceTypes.addon);
347-
expect(shared.resourceTable.type[1]).toEqual(resourceTypes.library);
348-
expect(shared.resourceTable.type[2]).toEqual(resourceTypes.url);
349-
expect(shared.resourceTable.type[3]).toEqual(resourceTypes.library);
345+
expect(shared.resourceTable.type[0]).toEqual(ResourceType.Addon);
346+
expect(shared.resourceTable.type[1]).toEqual(ResourceType.Library);
347+
expect(shared.resourceTable.type[2]).toEqual(ResourceType.Url);
348+
expect(shared.resourceTable.type[3]).toEqual(ResourceType.Library);
350349
const [name0, name1, name2, name3] = shared.resourceTable.name;
351350
expect(shared.stringArray[name0]).toEqual(
352351
'Extension "Form Autofill" (ID: formautofill@mozilla.org)'

0 commit comments

Comments
 (0)