@@ -9,9 +9,31 @@ pub fn process_output(name: &str, output: Vec<u8>) -> Result<Vec<Pass>> {
9
9
. chain_err ( || format ! ( "unable to convert output of {} to UTF-8" , name) ) ?;
10
10
let mut passes = Vec :: new ( ) ;
11
11
12
+ let mut time_indent = None ;
12
13
for line in output. lines ( ) {
13
- if line. starts_with ( "time: " ) {
14
- let time = & line[ "time: " . len ( ) ..line. find ( ";" ) . unwrap ( ) ] ;
14
+ if line. trim ( ) . starts_with ( "time: " ) {
15
+ let indent = line. find ( "time:" ) . unwrap ( ) ;
16
+ if time_indent. is_some ( ) && Some ( indent) != time_indent {
17
+ // XXX: sub passes currently cause problems because their names are inconsistent in
18
+ // incremental runs, especially codegen passes
19
+ //let time = &line[" time: ".len()..line.find(";").unwrap()];
20
+ //let time: f64 = time.parse().chain_err(|| format!("parsed time: {:?}", time))?;
21
+
22
+ //let mem = &line[line.find("rss: ").unwrap() + 5..line.find("MB").unwrap()];
23
+ //let mem: u64 = mem.parse().chain_err(|| format!("parsed memory: {:?}", mem))?;
24
+
25
+ //let name = line[line.find("MB\t").unwrap() + 3..].to_string();
26
+ //sub_passes.insert(name.clone(), Pass {
27
+ // name: name,
28
+ // time: time,
29
+ // mem: mem,
30
+ // sub_passes: HashMap::new(),
31
+ //});
32
+ continue
33
+ }
34
+ time_indent = Some ( indent) ;
35
+
36
+ let time = & line[ indent + "time: " . len ( ) ..line. find ( ";" ) . unwrap ( ) ] ;
15
37
let time: f64 = time. parse ( ) . chain_err ( || format ! ( "parsed time: {:?}" , time) ) ?;
16
38
17
39
let mem = & line[ line. find ( "rss: " ) . unwrap ( ) + 5 ..line. find ( "MB" ) . unwrap ( ) ] ;
@@ -23,22 +45,6 @@ pub fn process_output(name: &str, output: Vec<u8>) -> Result<Vec<Pass>> {
23
45
time : time,
24
46
mem : mem,
25
47
} ) ;
26
- } else if line. starts_with ( " time: " ) {
27
- // XXX: sub passes currently cause problems because their names are inconsistent in
28
- // incremental runs, especially codegen passes
29
- //let time = &line[" time: ".len()..line.find(";").unwrap()];
30
- //let time: f64 = time.parse().chain_err(|| format!("parsed time: {:?}", time))?;
31
-
32
- //let mem = &line[line.find("rss: ").unwrap() + 5..line.find("MB").unwrap()];
33
- //let mem: u64 = mem.parse().chain_err(|| format!("parsed memory: {:?}", mem))?;
34
-
35
- //let name = line[line.find("MB\t").unwrap() + 3..].to_string();
36
- //sub_passes.insert(name.clone(), Pass {
37
- // name: name,
38
- // time: time,
39
- // mem: mem,
40
- // sub_passes: HashMap::new(),
41
- //});
42
48
} else {
43
49
//info!("unhandled line: {}", line);
44
50
}
0 commit comments