Skip to content

Commit

Permalink
servo: Merge #16211 - Little HTML profile trace dumps related stuff (…
Browse files Browse the repository at this point in the history
…from fitzgen:little-trace-dump-stuff); r=jdm

<!-- Please describe your changes on the following line: -->

Updates to fix the labels in the rendered traces, and some other tiny stuff.

r? @jdm

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [X] There are tests for these changes

Source-Repo: https://github.com/servo/servo
Source-Revision: 64841090253992440b66ca12020e1125f0763cb0

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : aa83b46529f305c7a01086d6251c2b0deb661efc
  • Loading branch information
fitzgen committed Mar 31, 2017
1 parent b384d62 commit 9a3cdc6
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 27 deletions.
10 changes: 2 additions & 8 deletions servo/components/profile/time.rs
Expand Up @@ -15,10 +15,8 @@ use std::borrow::ToOwned;
use std::cmp::Ordering;
use std::collections::BTreeMap;
use std::error::Error;
use std::fs;
use std::fs::File;
use std::io::{self, Write};
use std::path;
use std::path::Path;
use std::time::Duration;
use std_time::precise_time_ns;
Expand Down Expand Up @@ -178,9 +176,7 @@ impl Profiler {
let outputoption = option.clone();
thread::Builder::new().name("Time profiler".to_owned()).spawn(move || {
let trace = file_path.as_ref()
.map(path::Path::new)
.map(fs::File::create)
.map(|res| TraceDump::new(res.unwrap()));
.and_then(|p| TraceDump::new(p).ok());
let mut profiler = Profiler::new(port, trace, Some(outputoption));
profiler.start();
}).expect("Thread spawning failed");
Expand All @@ -207,9 +203,7 @@ impl Profiler {
// Spawn the time profiler
thread::Builder::new().name("Time profiler".to_owned()).spawn(move || {
let trace = file_path.as_ref()
.map(path::Path::new)
.map(fs::File::create)
.map(|res| TraceDump::new(res.unwrap()));
.and_then(|p| TraceDump::new(p).ok());
let mut profiler = Profiler::new(port, trace, None);
profiler.start();
}).expect("Thread spawning failed");
Expand Down
7 changes: 1 addition & 6 deletions servo/components/profile/trace-dump.js
Expand Up @@ -244,11 +244,6 @@ Make sure to upstream changes, or they will get lost!
return increment;
};

// Get the category name for the given trace.
const traceCategory = exports.traceCategory = trace => {
return Object.keys(trace.category)[0];
};

/*** Window Specific Code ***************************************************/

if (!window) {
Expand Down Expand Up @@ -528,7 +523,7 @@ Make sure to upstream changes, or they will get lost!
inner.style.width = state.nsToSelectionPx(trace.endTime - trace.startTime) + "px";
inner.style.marginLeft = state.nsToSelectionPx(trace.startTime - state.startSelection) + "px";

let category = traceCategory(trace);
let category = trace.category;
inner.textContent = category;
inner.style.backgroundColor = state.getColorForCategory(category);

Expand Down
31 changes: 18 additions & 13 deletions servo/components/profile/trace_dump.rs
Expand Up @@ -7,9 +7,11 @@
use profile_traits::time::{ProfilerCategory, TimerMetadata};
use serde_json;
use std::fs;
use std::io::Write;
use std::io::{self, Write};
use std::path;

/// An RAII class for writing the HTML trace dump.
#[derive(Debug)]
pub struct TraceDump {
file: fs::File,
}
Expand All @@ -35,9 +37,12 @@ struct TraceEntry {
impl TraceDump {
/// Create a new TraceDump and write the prologue of the HTML file out to
/// disk.
pub fn new(mut file: fs::File) -> TraceDump {
write_prologue(&mut file);
TraceDump { file: file }
pub fn new<P>(trace_file_path: P) -> io::Result<TraceDump>
where P: AsRef<path::Path>
{
let mut file = fs::File::create(trace_file_path)?;
write_prologue(&mut file)?;
Ok(TraceDump { file: file })
}

/// Write one trace to the trace dump file.
Expand All @@ -62,18 +67,18 @@ impl Drop for TraceDump {
/// Write the epilogue of the trace dump HTML file out to disk on
/// destruction.
fn drop(&mut self) {
write_epilogue(&mut self.file);
write_epilogue(&mut self.file).unwrap();
}
}

fn write_prologue(file: &mut fs::File) {
writeln!(file, "{}", include_str!("./trace-dump-prologue-1.html")).unwrap();
writeln!(file, "{}", include_str!("./trace-dump.css")).unwrap();
writeln!(file, "{}", include_str!("./trace-dump-prologue-2.html")).unwrap();
fn write_prologue(file: &mut fs::File) -> io::Result<()> {
writeln!(file, "{}", include_str!("./trace-dump-prologue-1.html"))?;
writeln!(file, "{}", include_str!("./trace-dump.css"))?;
writeln!(file, "{}", include_str!("./trace-dump-prologue-2.html"))
}

fn write_epilogue(file: &mut fs::File) {
writeln!(file, "{}", include_str!("./trace-dump-epilogue-1.html")).unwrap();
writeln!(file, "{}", include_str!("./trace-dump.js")).unwrap();
writeln!(file, "{}", include_str!("./trace-dump-epilogue-2.html")).unwrap();
fn write_epilogue(file: &mut fs::File) -> io::Result<()> {
writeln!(file, "{}", include_str!("./trace-dump-epilogue-1.html"))?;
writeln!(file, "{}", include_str!("./trace-dump.js"))?;
writeln!(file, "{}", include_str!("./trace-dump-epilogue-2.html"))
}

0 comments on commit 9a3cdc6

Please sign in to comment.