Skip to content

Commit 2505900

Browse files
committed
Save query results and the dep graph in parallel
1 parent 6a4b124 commit 2505900

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

src/librustc_incremental/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#![feature(inclusive_range_syntax)]
2222
#![feature(specialization)]
2323

24+
#![recursion_limit="256"]
25+
2426
extern crate graphviz;
2527
#[macro_use] extern crate rustc;
2628
extern crate rustc_data_structures;

src/librustc_incremental/persist/save.rs

Lines changed: 11 additions & 8 deletions
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,13 +34,15 @@ pub fn save_dep_graph<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
3334
return;
3435
}
3536

36-
time(sess.time_passes(), "persist query result cache", || {
37-
save_in(sess,
38-
query_cache_path(sess),
39-
|e| encode_query_cache(tcx, e));
40-
});
41-
42-
if tcx.sess.opts.debugging_opts.incremental_queries {
37+
join(|| {
38+
if tcx.sess.opts.debugging_opts.incremental_queries {
39+
time(sess.time_passes(), "persist query result cache", || {
40+
save_in(sess,
41+
query_cache_path(sess),
42+
|e| encode_query_cache(tcx, e));
43+
});
44+
}
45+
}, || {
4346
time(sess.time_passes(), "persist dep-graph", || {
4447
save_in(sess,
4548
dep_graph_path(sess),
@@ -49,7 +52,7 @@ pub fn save_dep_graph<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
4952
})
5053
});
5154
});
52-
}
55+
});
5356

5457
dirty_clean::check_dirty_clean_annotations(tcx);
5558
})

0 commit comments

Comments
 (0)