Files
palemoon27/toolkit/devtools/performance/docs/markers.md
T
roytam1 45b8007f3d import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1150717 - Test request with no params in the Network Monitor. r=brings (a60e9e8d9)
- Bug 1168077 - Remove remaining spidermonkey js specific syntax from browser/devtools; r=miker (c98f20c30)
- Bug 1168125 - Fix existing tests, r=jsantell (b1dfa101e)
- Bug 1169439 - Pull out marker definitions into its own file, and move formatter and collapse functions into marker-utils. r=vp (17eb24ab3)
- Bug 1173654 - Part 1: Add logging methods for SurfaceType and ImageFormat. r=Bas (22f2fa019)
- Bug 1169125 - Part 1: Allow sending any DataSourceSurface-backed image over WebRTC and fix failure cases. r=bwc (1fb0def92)
- Bug 1169125 - Part 2: Use UniquePtr for scoped delete of yuv data in MediaPipeline. r=bwc (cdb79e201)
- Bug 1173654 - Part 2: Use namespaces in MediaPipeline.cpp. r=bwc (311696260)
- Bug 1173654 - Part 3: Attempt to GetDataSurface() and convert if sending pure I420 fails. r=bwc, r=jesup (58520b820)
- Bug 1173654 - Part 4: Add detailed logging and asserts to MediaPipeline::ProcessVideoChunk. r=bwc (ba08ae5bc)
- Bug 1155089 - Part 1: Reset |TrackID| for MediaPipelineTransmit::PipelineListener on replaceTrack(). r=bwc (304fb8703)
- adapted Bug 1142688 - Wait for actual audio data on remote side before checking audio sanity. r=jesup,padenot (479f6356c)
- Bug 858927 - Move the mozilla::TimeStamp into mozglue. r=glandium (751938e09)
- Bug 1166559 - Add documentation for ProfileTimelineMarkers from a dev tools perspective. r=fitzgen (ed1563dfb)
- Bug 1141614 - Part 4: Expose cycle collection markers in the devtools frontend; r=jsantell (2eb830de7)
2021-07-30 11:25:34 +08:00

4.7 KiB
Raw Blame History

Timeline Markers

Common

  • DOMHighResTimeStamp start
  • DOMHighResTimeStamp end
  • DOMString name
  • object? stack
  • object? endStack

DOMEvent

Triggered when a DOM event occurs, like a click or a keypress.

  • unsigned short eventPhase - a number indicating what phase this event is in (target, bubbling, capturing, maps to Ci.nsIDOMEvent constants)
  • DOMString type - the type of event, like "keypress" or "click"

Reflow

Reflow markers (labeled as "Layout") indicate when a change has occurred to a DOM element's positioning that requires the frame tree (rendering representation of the DOM) to figure out the new position of a handful of elements. Fired via PresShell::DoReflow

Paint

  • sequence<{ long height, long width, long x, long y }> rectangles - An array of rectangle objects indicating where painting has occurred.

Styles

Style markers (labeled as "Recalculating Styles") are triggered when Gecko needs to figure out the computational style of an element. Fired via RestyleTracker::DoProcessRestyles when there are elements to restyle.

  • DOMString restyleHint - A string indicating what kind of restyling will need to be processed; for example "eRestyle_StyleAttribute" is relatively cheap, whereas "eRestyle_Subtree" is more expensive. The hint can be a string of any amount of the following, separated via " | ". All future restyleHints are from RestyleManager::RestyleHintToString.

    • "eRestyle_Self"
    • "eRestyle_Subtree"
    • "eRestyle_LaterSiblings"
    • "eRestyle_CSSTransitions"
    • "eRestyle_CSSAnimations"
    • "eRestyle_SVGAttrAnimations"
    • "eRestyle_StyleAttribute"
    • "eRestyle_StyleAttribute_Animations"
    • "eRestyle_Force"
    • "eRestyle_ForceDescendants"

Javascript

Javascript markers are emitted indicating when JS execution begins and ends, with a reason that triggered it (causeName), like a requestAnimationFrame or a setTimeout.

  • string causeName - The reason that JS was entered. There are many possible reasons, and the interesting ones to show web developers (triggered by content) are:

    • "<script> element"
    • "EventListener.handleEvent"
    • "setInterval handler"
    • "setTimeout handler"
    • "FrameRequestCallback"
    • "EventHandlerNonNull"
    • "promise callback"
    • "promise initializer"
    • "Worker runnable"

    There are also many more potential JS causes, some which are just internally used and won't emit a marker, but the below ones are only of interest to Gecko hackers, most likely

    • "promise thenable"
    • "worker runnable"
    • "nsHTTPIndex set HTTPIndex property"
    • "XPCWrappedJS method call"
    • "nsHTTPIndex OnFTPControlLog"
    • "XPCWrappedJS QueryInterface"
    • "xpcshell argument processing”
    • "XPConnect sandbox evaluation "
    • "component loader report global"
    • "component loader load module"
    • "Cross-Process Object Wrapper call/construct"
    • "Cross-Process Object Wrapper set'"
    • "Cross-Process Object Wrapper 'get'"
    • "nsXULTemplateBuilder creation"
    • "TestShellCommand"
    • "precompiled XUL <script> element"
    • "XBL <field> initialization "
    • "NPAPI NPN_evaluate"
    • "NPAPI get"
    • "NPAPI set"
    • "NPAPI doInvoke"
    • "javascript: URI"
    • "geolocation.always_precise indexing"
    • "geolocation.app_settings enumeration"
    • "WebIDL dictionary creation"
    • "XBL <constructor>/<destructor> invocation"
    • "message manager script load"
    • "message handler script load"
    • "nsGlobalWindow report new global"

GarbageCollection

Emitted after a full GC cycle has completed (which is after any number of incremental slices).

  • DOMString causeName - The reason for a GC event to occur. A full list of GC reasons can be found on MDN.
  • DOMString nonincremenetalReason - If the GC could not do an incremental GC (smaller, quick GC events), and we have to walk the entire heap and GC everything marked, then the reason listed here is why.

nsCycleCollector::Collect

An nsCycleCollector::Collect marker is emitted for each incremental cycle collection slice and each non-incremental cycle collection.

nsCycleCollector::ForgetSkippable

nsCycleCollector::ForgetSkippable is presented as "Cycle Collection", but in reality it is preparation/pre-optimization for cycle collection, and not the actual tracing of edges and collecting of cycles.

ConsoleTime

A marker generated via console.time() and console.timeEnd().

  • DOMString causeName - the label passed into console.time(label) and console.timeEnd(label) if passed in.

TimeStamp

A marker generated via console.timeStamp(label).

  • DOMString causeName - the label passed into console.timeStamp(label) if passed in.

Parse HTML

Parse XML