Skip to content

Commit 71c26b3

Browse files
committed
Save query results and the dep graph in parallel
1 parent b5650f9 commit 71c26b3

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

src/librustc_incremental/lib.rs

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
#![feature(fs_read_write)]
1818
#![feature(specialization)]
1919

20+
#![recursion_limit="256"]
21+
2022
extern crate graphviz;
2123
#[macro_use] extern crate rustc;
2224
extern crate rustc_data_structures;

src/librustc_incremental/persist/save.rs

+14-8
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use rustc::session::Session;
1313
use rustc::ty::TyCtxt;
1414
use rustc::util::common::time;
1515
use rustc_data_structures::fx::FxHashMap;
16+
use rustc_data_structures::sync::join;
1617
use rustc_serialize::Encodable as RustcEncodable;
1718
use rustc_serialize::opaque::Encoder;
1819
use std::io::{self, Cursor};
@@ -33,23 +34,28 @@ pub fn save_dep_graph<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
3334
return;
3435
}
3536

36-
time(sess, "persist query result cache", || {
37-
save_in(sess,
38-
query_cache_path(sess),
39-
|e| encode_query_cache(tcx, e));
40-
});
37+
let query_cache_path = query_cache_path(sess);
38+
let dep_graph_path = dep_graph_path(sess);
4139

42-
if tcx.sess.opts.debugging_opts.incremental_queries {
40+
join(move || {
41+
if tcx.sess.opts.debugging_opts.incremental_queries {
42+
time(sess, "persist query result cache", || {
43+
save_in(sess,
44+
query_cache_path,
45+
|e| encode_query_cache(tcx, e));
46+
});
47+
}
48+
}, || {
4349
time(sess, "persist dep-graph", || {
4450
save_in(sess,
45-
dep_graph_path(sess),
51+
dep_graph_path,
4652
|e| {
4753
time(sess, "encode dep-graph", || {
4854
encode_dep_graph(tcx, e)
4955
})
5056
});
5157
});
52-
}
58+
});
5359

5460
dirty_clean::check_dirty_clean_annotations(tcx);
5561
})

0 commit comments

Comments
 (0)