1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 # This file defines all profiling categories with their sub-categories. It is
8 # parsed by generate_profiling_categories.py at build time to create
9 # ProfilingCategoryList.h and profiling_categories.rs files.
11 # Profiling sub-categories are applied to each sampled stack to describe the
12 # type of workload that the CPU is busy with. Only one sub-category can be
13 # assigned so be mindful that these are non-overlapping. The active category is
14 # set by pushing a label to the profiling stack, or by the unwinder in cases
15 # such as JITs. A profile sample in arbitrary C++/Rust will typically be
16 # categorized based on the top of the label stack.
18 # Each category consists of a name and a set of attributes that are described below:
22 # Name of the profiling category. This will be used in the C++ enum fields (not
27 # Label of the profiling category. This a more human readable string for the
28 # category. Label will be displayed in the Firefox Profiler front-end. But also
29 # this will be used as a Rust enum field (with non-alphanumeric characters
30 # removed) because it's more idiomatic for Rust enums than name fields (which
31 # are snake cased fields with all caps, which is not idiomatic to rust enum
36 # Color that this category will show up as in the Firefox Profiler front-end.
37 # The list of available color names for categories is:
48 # subcategories [required]
50 # A list of sub-categories that belong to this category.
51 # There must be at least one sub-category for each category and there must be at
52 # least one category with the same name as the category to indicate the default
53 # sub-category. Each sub-category must have name and label attributes.
55 # name attribute should either be the same as the category (for default
56 # sub-category) or should start with parent category name + underscore
59 # label attribute has the same purpose as parent category label attribute.
69 # Note that the first sub-category has the same name with the category. This is
70 # the default sub-category. Also note the other sub-categories starting with the
71 # category name + underscore.
87 - name: OTHER_PreferenceRead
88 label: Preference Read
89 - name: OTHER_Profiling
105 - name: LAYOUT_FrameConstruction
106 label: Frame construction
107 - name: LAYOUT_Reflow
109 - name: LAYOUT_CSSParsing
111 - name: LAYOUT_SelectorQuery
112 label: Selector query
113 - name: LAYOUT_StyleComputation
114 label: Style computation
115 - name: LAYOUT_Destroy
116 label: Layout cleanup
126 - name: JS_BaselineCompilation
127 label: JIT Compile (baseline)
128 - name: JS_IonCompilation
129 label: JIT Compile (ion)
130 - name: JS_Interpreter
132 - name: JS_BaselineInterpret
133 label: JIT (baseline-interpreter)
135 label: JIT (baseline)
152 label: Major GC (Other)
153 - name: GCCC_MajorGC_Mark
154 label: Major GC (Mark)
155 - name: GCCC_MajorGC_Sweep
156 label: Major GC (Sweep)
157 - name: GCCC_MajorGC_Compact
158 label: Major GC (Compact)
159 - name: GCCC_UnmarkGray
163 - name: GCCC_FreeSnowWhite
164 label: CC (Free Snow White)
165 - name: GCCC_BuildGraph
166 label: CC (Build Graph)
167 - name: GCCC_ScanRoots
168 label: CC (Scan Roots)
169 - name: GCCC_CollectWhite
170 label: CC (Collect White)
171 - name: GCCC_Finalize
187 - name: GRAPHICS_DisplayListBuilding
188 label: DisplayList building
189 - name: GRAPHICS_DisplayListMerging
190 label: DisplayList merging
191 - name: GRAPHICS_LayerBuilding
192 label: Layer building
193 - name: GRAPHICS_TileAllocation
194 label: Tile allocation
195 - name: GRAPHICS_WRDisplayList
196 label: WebRender display list
197 - name: GRAPHICS_Rasterization
199 - name: GRAPHICS_FlushingAsyncPaints
200 label: Flushing async paints
201 - name: GRAPHICS_ImageDecoding
202 label: Image decoding
218 - name: JAVA_ANDROIDX
222 - name: JAVA_ANDROIDX
225 - name: JAVA_LANGUAGE
229 - name: JAVA_LANGUAGE
268 - name: MEDIA_PLAYBACK
271 label: Real-time rendering
273 # We don't name this category ACCESSIBILITY
274 # because it's already defined as a macro.