blob: 0529d7a55defc1ffc882a73bd7bb403bb2484f0b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Profiling categories
# ====================
# This file defines all profiling categories with their sub-categories. It is
# parsed by generate_profiling_categories.py at build time to create
# ProfilingCategoryList.h and profiling_categories.rs files.
#
# Profiling sub-categories are applied to each sampled stack to describe the
# type of workload that the CPU is busy with. Only one sub-category can be
# assigned so be mindful that these are non-overlapping. The active category is
# set by pushing a label to the profiling stack, or by the unwinder in cases
# such as JITs. A profile sample in arbitrary C++/Rust will typically be
# categorized based on the top of the label stack.
#
# Each category consists of a name and a set of attributes that are described below:
#
# name [required]
# ====
# Name of the profiling category. This will be used in the C++ enum fields (not
# by Rust).
#
# label [required]
# =====
# Label of the profiling category. This a more human readable string for the
# category. Label will be displayed in the Firefox Profiler front-end. But also
# this will be used as a Rust enum field (with non-alphanumeric characters
# removed) because it's more idiomatic for Rust enums than name fields (which
# are snake cased fields with all caps, which is not idiomatic to rust enum
# field).
#
# color [required]
# =====
# Color that this category will show up as in the Firefox Profiler front-end.
# The list of available color names for categories is:
# - transparent
# - blue
# - green
# - grey
# - lightblue
# - magenta
# - orange
# - purple
# - yellow
#
# subcategories [required]
# =============
# A list of sub-categories that belong to this category.
# There must be at least one sub-category for each category and there must be at
# least one category with the same name as the category to indicate the default
# sub-category. Each sub-category must have name and label attributes.
#
# name attribute should either be the same as the category (for default
# sub-category) or should start with parent category name + underscore
# (e.g. JS_Parsing).
#
# label attribute has the same purpose as parent category label attribute.
#
# For example:
# - name: JS
# subcategories:
# - name: JS
# label: Other
# - name: JS_Parsing
# label: Parsing
#
# Note that the first sub-category has the same name with the category. This is
# the default sub-category. Also note the other sub-categories starting with the
# category name + underscore.
#
- name: IDLE
label: Idle
color: transparent
subcategories:
- name: IDLE
label: Other
- name: OTHER
label: Other
color: grey
subcategories:
- name: OTHER
label: Other
- name: OTHER_PreferenceRead
label: Preference Read
- name: OTHER_Profiling
label: Profiling
- name: TEST
label: Test
color: darkgray
subcategories:
- name: TEST
label: Test
- name: LAYOUT
label: Layout
color: purple
subcategories:
- name: LAYOUT
label: Other
- name: LAYOUT_FrameConstruction
label: Frame construction
- name: LAYOUT_Reflow
label: Reflow
- name: LAYOUT_CSSParsing
label: CSS parsing
- name: LAYOUT_SelectorQuery
label: Selector query
- name: LAYOUT_StyleComputation
label: Style computation
- name: LAYOUT_Destroy
label: Layout cleanup
- name: LAYOUT_Printing
label: Printing
- name: JS
label: JavaScript
color: yellow
subcategories:
- name: JS
label: Other
- name: JS_Parsing
label: Parsing
- name: JS_BaselineCompilation
label: JIT Compile (baseline)
- name: JS_IonCompilation
label: JIT Compile (ion)
- name: JS_Interpreter
label: Interpreter
- name: JS_BaselineInterpret
label: JIT (baseline-interpreter)
- name: JS_Baseline
label: JIT (baseline)
- name: JS_IonMonkey
label: JIT (ion)
- name: JS_Builtin
label: Builtin API
- name: JS_WasmIon
label: Wasm (ion)
- name: JS_WasmBaseline
label: Wasm (baseline)
- name: JS_WasmOther
label: Wasm (other)
- name: GCCC
label: GC / CC
color: orange
subcategories:
- name: GCCC
label: Other
- name: GCCC_MinorGC
label: Minor GC
- name: GCCC_MajorGC
label: Major GC (Other)
- name: GCCC_MajorGC_Mark
label: Major GC (Mark)
- name: GCCC_MajorGC_Sweep
label: Major GC (Sweep)
- name: GCCC_MajorGC_Compact
label: Major GC (Compact)
- name: GCCC_UnmarkGray
label: Unmark Gray
- name: GCCC_Barrier
label: Barrier
- name: GCCC_FreeSnowWhite
label: CC (Free Snow White)
- name: GCCC_BuildGraph
label: CC (Build Graph)
- name: GCCC_ScanRoots
label: CC (Scan Roots)
- name: GCCC_CollectWhite
label: CC (Collect White)
- name: GCCC_Finalize
label: CC (Finalize)
- name: NETWORK
label: Network
color: lightblue
subcategories:
- name: NETWORK
label: Other
- name: GRAPHICS
label: Graphics
color: green
subcategories:
- name: GRAPHICS
label: Other
- name: GRAPHICS_DisplayListBuilding
label: DisplayList building
- name: GRAPHICS_DisplayListMerging
label: DisplayList merging
- name: GRAPHICS_LayerBuilding
label: Layer building
- name: GRAPHICS_TileAllocation
label: Tile allocation
- name: GRAPHICS_WRDisplayList
label: WebRender display list
- name: GRAPHICS_Rasterization
label: Rasterization
- name: GRAPHICS_FlushingAsyncPaints
label: Flushing async paints
- name: GRAPHICS_ImageDecoding
label: Image decoding
- name: DOM
label: DOM
color: blue
subcategories:
- name: DOM
label: Other
- name: JAVA_ANDROID
label: Android
color: yellow
subcategories:
- name: JAVA_ANDROID
label: Other
- name: JAVA_ANDROIDX
label: AndroidX
color: orange
subcategories:
- name: JAVA_ANDROIDX
label: Other
- name: JAVA_LANGUAGE
label: Java
color: blue
subcategories:
- name: JAVA_LANGUAGE
label: Other
- name: JAVA_MOZILLA
label: Mozilla
color: green
subcategories:
- name: JAVA_MOZILLA
label: Other
- name: JAVA_KOTLIN
label: Kotlin
color: purple
subcategories:
- name: JAVA_KOTLIN
label: Other
- name: JAVA_BLOCKED
label: Blocked
color: lightblue
subcategories:
- name: JAVA_BLOCKED
label: Other
- name: IPC
label: IPC
color: lightgreen
subcategories:
- name: IPC
label: Other
- name: MEDIA
label: Media
color: orange
subcategories:
- name: MEDIA
label: Other
- name: MEDIA_CUBEB
label: Cubeb
- name: MEDIA_PLAYBACK
label: Playback
- name: MEDIA_RT
label: Real-time rendering
# We don't name this category ACCESSIBILITY
# because it's already defined as a macro.
- name: A11Y
label: Accessibility
color: brown
subcategories:
- name: A11Y
label: Other
- name: PROFILER
label: Profiler
color: lightred
subcategories:
- name: PROFILER
label: Other
- name: TIMER
label: Timer
color: grey
subcategories:
- name: TIMER
label: Other
- name: REMOTE_PROTOCOL
label: Remote-Protocol
color: grey
subcategories:
- name: REMOTE_PROTOCOL
label: Other
|