@@ -13,6 +13,7 @@ use rustc::session::Session;
1313use rustc:: ty:: TyCtxt ;
1414use rustc:: util:: common:: time;
1515use rustc_data_structures:: fx:: FxHashMap ;
16+ use rustc_data_structures:: sync:: join;
1617use rustc_serialize:: Encodable as RustcEncodable ;
1718use rustc_serialize:: opaque:: Encoder ;
1819use 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