aboutsummaryrefslogtreecommitdiffstats
path: root/components/profile_traits/time.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/profile_traits/time.rs')
-rw-r--r--components/profile_traits/time.rs101
1 files changed, 56 insertions, 45 deletions
diff --git a/components/profile_traits/time.rs b/components/profile_traits/time.rs
index 5b969ecd8f7..64664265a1a 100644
--- a/components/profile_traits/time.rs
+++ b/components/profile_traits/time.rs
@@ -7,6 +7,8 @@ extern crate time as std_time;
use energy::read_energy_uj;
use ipc_channel::ipc::IpcSender;
use self::std_time::precise_time_ns;
+use signpost;
+use util::opts;
#[derive(PartialEq, Clone, PartialOrd, Eq, Ord, Debug, Deserialize, Serialize)]
pub struct TimerMetadata {
@@ -37,51 +39,51 @@ pub enum ProfilerMsg {
#[repr(u32)]
#[derive(PartialEq, Clone, Copy, PartialOrd, Eq, Ord, Deserialize, Serialize, Debug, Hash)]
pub enum ProfilerCategory {
- Compositing,
- LayoutPerform,
- LayoutStyleRecalc,
- LayoutTextShaping,
- LayoutRestyleDamagePropagation,
- LayoutNonIncrementalReset,
- LayoutSelectorMatch,
- LayoutTreeBuilder,
- LayoutDamagePropagate,
- LayoutGeneratedContent,
- LayoutDisplayListSorting,
- LayoutFloatPlacementSpeculation,
- LayoutMain,
- LayoutStoreOverflow,
- LayoutParallelWarmup,
- LayoutDispListBuild,
- NetHTTPRequestResponse,
- PaintingPerTile,
- PaintingPrepBuff,
- Painting,
- ImageDecoding,
- ImageSaving,
- ScriptAttachLayout,
- ScriptConstellationMsg,
- ScriptDevtoolsMsg,
- ScriptDocumentEvent,
- ScriptDomEvent,
- ScriptEvaluate,
- ScriptEvent,
- ScriptFileRead,
- ScriptImageCacheMsg,
- ScriptInputEvent,
- ScriptNetworkEvent,
- ScriptParseHTML,
- ScriptPlannedNavigation,
- ScriptResize,
- ScriptSetScrollState,
- ScriptSetViewport,
- ScriptTimerEvent,
- ScriptStylesheetLoad,
- ScriptUpdateReplacedElement,
- ScriptWebSocketEvent,
- ScriptWorkerEvent,
- ScriptServiceWorkerEvent,
- ApplicationHeartbeat,
+ Compositing = 0x00,
+ LayoutPerform = 0x10,
+ LayoutStyleRecalc = 0x11,
+ LayoutTextShaping = 0x12,
+ LayoutRestyleDamagePropagation = 0x13,
+ LayoutNonIncrementalReset = 0x14,
+ LayoutSelectorMatch = 0x15,
+ LayoutTreeBuilder = 0x16,
+ LayoutDamagePropagate = 0x17,
+ LayoutGeneratedContent = 0x18,
+ LayoutDisplayListSorting = 0x19,
+ LayoutFloatPlacementSpeculation = 0x1a,
+ LayoutMain = 0x1b,
+ LayoutStoreOverflow = 0x1c,
+ LayoutParallelWarmup = 0x1d,
+ LayoutDispListBuild = 0x1e,
+ NetHTTPRequestResponse = 0x30,
+ PaintingPerTile = 0x41,
+ PaintingPrepBuff = 0x42,
+ Painting = 0x43,
+ ImageDecoding = 0x50,
+ ImageSaving = 0x51,
+ ScriptAttachLayout = 0x60,
+ ScriptConstellationMsg = 0x61,
+ ScriptDevtoolsMsg = 0x62,
+ ScriptDocumentEvent = 0x63,
+ ScriptDomEvent = 0x64,
+ ScriptEvaluate = 0x65,
+ ScriptEvent = 0x66,
+ ScriptFileRead = 0x67,
+ ScriptImageCacheMsg = 0x68,
+ ScriptInputEvent = 0x69,
+ ScriptNetworkEvent = 0x6a,
+ ScriptParseHTML = 0x6b,
+ ScriptPlannedNavigation = 0x6c,
+ ScriptResize = 0x6d,
+ ScriptSetScrollState = 0x6e,
+ ScriptSetViewport = 0x6f,
+ ScriptTimerEvent = 0x70,
+ ScriptStylesheetLoad = 0x71,
+ ScriptUpdateReplacedElement = 0x72,
+ ScriptWebSocketEvent = 0x73,
+ ScriptWorkerEvent = 0x74,
+ ScriptServiceWorkerEvent = 0x75,
+ ApplicationHeartbeat = 0x90,
}
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Deserialize, Serialize)]
@@ -103,11 +105,20 @@ pub fn profile<T, F>(category: ProfilerCategory,
-> T
where F: FnOnce() -> T
{
+ if opts::get().signpost {
+ signpost::start(category as u32, &[0, 0, 0, (category as usize) >> 4]);
+ }
let start_energy = read_energy_uj();
let start_time = precise_time_ns();
+
let val = callback();
+
let end_time = precise_time_ns();
let end_energy = read_energy_uj();
+ if opts::get().signpost {
+ signpost::end(category as u32, &[0, 0, 0, (category as usize) >> 4]);
+ }
+
send_profile_data(category,
meta,
profiler_chan,