3
3
use crate :: cstore:: { self , CStore , MetadataBlob } ;
4
4
use crate :: locator:: { self , CratePaths } ;
5
5
use crate :: schema:: { CrateRoot , CrateDep } ;
6
- use rustc_data_structures:: sync:: { Lrc , RwLock , Lock , AtomicCell } ;
6
+ use rustc_data_structures:: sync:: { RwLock , Lock , AtomicCell } ;
7
7
8
8
use rustc:: hir:: def_id:: CrateNum ;
9
9
use rustc_data_structures:: svh:: Svh ;
@@ -186,7 +186,7 @@ impl<'a> CrateLoader<'a> {
186
186
lib : Library ,
187
187
dep_kind : DepKind ,
188
188
name : Symbol
189
- ) -> ( CrateNum , Lrc < cstore :: CrateMetadata > ) {
189
+ ) -> CrateNum {
190
190
let _prof_timer = self . sess . prof . generic_activity ( "metadata_register_crate" ) ;
191
191
192
192
let Library { source, metadata } = lib;
@@ -240,9 +240,9 @@ impl<'a> CrateLoader<'a> {
240
240
crate_root. def_path_table . decode ( ( & metadata, self . sess ) )
241
241
} ) ;
242
242
243
- let cmeta = cstore:: CrateMetadata {
243
+ self . cstore . set_crate_data ( cnum , cstore:: CrateMetadata {
244
244
extern_crate : Lock :: new ( None ) ,
245
- def_path_table : Lrc :: new ( def_path_table ) ,
245
+ def_path_table,
246
246
trait_impls,
247
247
root : crate_root,
248
248
blob : metadata,
@@ -256,11 +256,9 @@ impl<'a> CrateLoader<'a> {
256
256
private_dep,
257
257
raw_proc_macros,
258
258
dep_node_index : AtomicCell :: new ( DepNodeIndex :: INVALID ) ,
259
- } ;
259
+ } ) ;
260
260
261
- let cmeta = Lrc :: new ( cmeta) ;
262
- self . cstore . set_crate_data ( cnum, cmeta. clone ( ) ) ;
263
- ( cnum, cmeta)
261
+ cnum
264
262
}
265
263
266
264
fn load_proc_macro < ' b > (
@@ -324,7 +322,7 @@ impl<'a> CrateLoader<'a> {
324
322
span : Span ,
325
323
dep_kind : DepKind ,
326
324
dep : Option < ( & ' b CratePaths , & ' b CrateDep ) > ,
327
- ) -> ( CrateNum , Lrc < cstore :: CrateMetadata > ) {
325
+ ) -> CrateNum {
328
326
self . maybe_resolve_crate ( name, span, dep_kind, dep) . unwrap_or_else ( |err| err. report ( ) )
329
327
}
330
328
@@ -334,7 +332,7 @@ impl<'a> CrateLoader<'a> {
334
332
span : Span ,
335
333
mut dep_kind : DepKind ,
336
334
dep : Option < ( & ' b CratePaths , & ' b CrateDep ) > ,
337
- ) -> Result < ( CrateNum , Lrc < cstore :: CrateMetadata > ) , LoadError < ' b > > {
335
+ ) -> Result < CrateNum , LoadError < ' b > > {
338
336
info ! ( "resolving crate `{}`" , name) ;
339
337
let ( root, hash, extra_filename, path_kind) = match dep {
340
338
Some ( ( root, dep) ) =>
@@ -380,7 +378,7 @@ impl<'a> CrateLoader<'a> {
380
378
data. dep_kind . with_lock ( |data_dep_kind| {
381
379
* data_dep_kind = cmp:: max ( * data_dep_kind, dep_kind) ;
382
380
} ) ;
383
- Ok ( ( cnum, data ) )
381
+ Ok ( cnum)
384
382
}
385
383
( LoadResult :: Loaded ( library) , host_library) => {
386
384
Ok ( self . register_crate ( host_library, root, span, library, dep_kind, name) )
@@ -484,7 +482,7 @@ impl<'a> CrateLoader<'a> {
484
482
DepKind :: MacrosOnly => DepKind :: MacrosOnly ,
485
483
_ => dep. kind ,
486
484
} ;
487
- self . resolve_crate ( dep. name , span, dep_kind, Some ( ( root, & dep) ) ) . 0
485
+ self . resolve_crate ( dep. name , span, dep_kind, Some ( ( root, & dep) ) )
488
486
} ) ) . collect ( )
489
487
}
490
488
@@ -581,7 +579,8 @@ impl<'a> CrateLoader<'a> {
581
579
} ;
582
580
info ! ( "panic runtime not found -- loading {}" , name) ;
583
581
584
- let ( cnum, data) = self . resolve_crate ( name, DUMMY_SP , DepKind :: Implicit , None ) ;
582
+ let cnum = self . resolve_crate ( name, DUMMY_SP , DepKind :: Implicit , None ) ;
583
+ let data = self . cstore . get_crate_data ( cnum) ;
585
584
586
585
// Sanity check the loaded crate to ensure it is indeed a panic runtime
587
586
// and the panic strategy is indeed what we thought it was.
@@ -685,7 +684,8 @@ impl<'a> CrateLoader<'a> {
685
684
} ) ;
686
685
info ! ( "loading sanitizer: {}" , name) ;
687
686
688
- let data = self . resolve_crate ( name, DUMMY_SP , DepKind :: Explicit , None ) . 1 ;
687
+ let cnum = self . resolve_crate ( name, DUMMY_SP , DepKind :: Explicit , None ) ;
688
+ let data = self . cstore . get_crate_data ( cnum) ;
689
689
690
690
// Sanity check the loaded crate to ensure it is indeed a sanitizer runtime
691
691
if !data. root . sanitizer_runtime {
@@ -705,7 +705,8 @@ impl<'a> CrateLoader<'a> {
705
705
info ! ( "loading profiler" ) ;
706
706
707
707
let name = Symbol :: intern ( "profiler_builtins" ) ;
708
- let data = self . resolve_crate ( name, DUMMY_SP , DepKind :: Implicit , None ) . 1 ;
708
+ let cnum = self . resolve_crate ( name, DUMMY_SP , DepKind :: Implicit , None ) ;
709
+ let data = self . cstore . get_crate_data ( cnum) ;
709
710
710
711
// Sanity check the loaded crate to ensure it is indeed a profiler runtime
711
712
if !data. root . profiler_runtime {
@@ -886,7 +887,7 @@ impl<'a> CrateLoader<'a> {
886
887
DepKind :: Explicit
887
888
} ;
888
889
889
- let cnum = self . resolve_crate ( name, item. span , dep_kind, None ) . 0 ;
890
+ let cnum = self . resolve_crate ( name, item. span , dep_kind, None ) ;
890
891
891
892
let def_id = definitions. opt_local_def_id ( item. id ) . unwrap ( ) ;
892
893
let path_len = definitions. def_path ( def_id. index ) . data . len ( ) ;
@@ -907,7 +908,7 @@ impl<'a> CrateLoader<'a> {
907
908
}
908
909
909
910
pub fn process_path_extern ( & mut self , name : Symbol , span : Span ) -> CrateNum {
910
- let cnum = self . resolve_crate ( name, span, DepKind :: Explicit , None ) . 0 ;
911
+ let cnum = self . resolve_crate ( name, span, DepKind :: Explicit , None ) ;
911
912
912
913
self . update_extern_crate (
913
914
cnum,
@@ -925,7 +926,7 @@ impl<'a> CrateLoader<'a> {
925
926
}
926
927
927
928
pub fn maybe_process_path_extern ( & mut self , name : Symbol , span : Span ) -> Option < CrateNum > {
928
- let cnum = self . maybe_resolve_crate ( name, span, DepKind :: Explicit , None ) . ok ( ) ?. 0 ;
929
+ let cnum = self . maybe_resolve_crate ( name, span, DepKind :: Explicit , None ) . ok ( ) ?;
929
930
930
931
self . update_extern_crate (
931
932
cnum,
0 commit comments