33use crate :: cstore:: { self , CStore , MetadataBlob } ;
44use crate :: locator:: { self , CratePaths } ;
55use crate :: schema:: { CrateRoot , CrateDep } ;
6- use rustc_data_structures:: sync:: { Lrc , RwLock , Lock , AtomicCell } ;
6+ use rustc_data_structures:: sync:: { RwLock , Lock , AtomicCell } ;
77
88use rustc:: hir:: def_id:: CrateNum ;
99use rustc_data_structures:: svh:: Svh ;
@@ -186,7 +186,7 @@ impl<'a> CrateLoader<'a> {
186186 lib : Library ,
187187 dep_kind : DepKind ,
188188 name : Symbol
189- ) -> ( CrateNum , Lrc < cstore :: CrateMetadata > ) {
189+ ) -> CrateNum {
190190 let _prof_timer = self . sess . prof . generic_activity ( "metadata_register_crate" ) ;
191191
192192 let Library { source, metadata } = lib;
@@ -240,9 +240,9 @@ impl<'a> CrateLoader<'a> {
240240 crate_root. def_path_table . decode ( ( & metadata, self . sess ) )
241241 } ) ;
242242
243- let cmeta = cstore:: CrateMetadata {
243+ self . cstore . set_crate_data ( cnum , cstore:: CrateMetadata {
244244 extern_crate : Lock :: new ( None ) ,
245- def_path_table : Lrc :: new ( def_path_table ) ,
245+ def_path_table,
246246 trait_impls,
247247 root : crate_root,
248248 blob : metadata,
@@ -256,11 +256,9 @@ impl<'a> CrateLoader<'a> {
256256 private_dep,
257257 raw_proc_macros,
258258 dep_node_index : AtomicCell :: new ( DepNodeIndex :: INVALID ) ,
259- } ;
259+ } ) ;
260260
261- let cmeta = Lrc :: new ( cmeta) ;
262- self . cstore . set_crate_data ( cnum, cmeta. clone ( ) ) ;
263- ( cnum, cmeta)
261+ cnum
264262 }
265263
266264 fn load_proc_macro < ' b > (
@@ -324,7 +322,7 @@ impl<'a> CrateLoader<'a> {
324322 span : Span ,
325323 dep_kind : DepKind ,
326324 dep : Option < ( & ' b CratePaths , & ' b CrateDep ) > ,
327- ) -> ( CrateNum , Lrc < cstore :: CrateMetadata > ) {
325+ ) -> CrateNum {
328326 self . maybe_resolve_crate ( name, span, dep_kind, dep) . unwrap_or_else ( |err| err. report ( ) )
329327 }
330328
@@ -334,7 +332,7 @@ impl<'a> CrateLoader<'a> {
334332 span : Span ,
335333 mut dep_kind : DepKind ,
336334 dep : Option < ( & ' b CratePaths , & ' b CrateDep ) > ,
337- ) -> Result < ( CrateNum , Lrc < cstore :: CrateMetadata > ) , LoadError < ' b > > {
335+ ) -> Result < CrateNum , LoadError < ' b > > {
338336 info ! ( "resolving crate `{}`" , name) ;
339337 let ( root, hash, extra_filename, path_kind) = match dep {
340338 Some ( ( root, dep) ) =>
@@ -380,7 +378,7 @@ impl<'a> CrateLoader<'a> {
380378 data. dep_kind . with_lock ( |data_dep_kind| {
381379 * data_dep_kind = cmp:: max ( * data_dep_kind, dep_kind) ;
382380 } ) ;
383- Ok ( ( cnum, data ) )
381+ Ok ( cnum)
384382 }
385383 ( LoadResult :: Loaded ( library) , host_library) => {
386384 Ok ( self . register_crate ( host_library, root, span, library, dep_kind, name) )
@@ -484,7 +482,7 @@ impl<'a> CrateLoader<'a> {
484482 DepKind :: MacrosOnly => DepKind :: MacrosOnly ,
485483 _ => dep. kind ,
486484 } ;
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) ) )
488486 } ) ) . collect ( )
489487 }
490488
@@ -581,7 +579,8 @@ impl<'a> CrateLoader<'a> {
581579 } ;
582580 info ! ( "panic runtime not found -- loading {}" , name) ;
583581
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) ;
585584
586585 // Sanity check the loaded crate to ensure it is indeed a panic runtime
587586 // and the panic strategy is indeed what we thought it was.
@@ -685,7 +684,8 @@ impl<'a> CrateLoader<'a> {
685684 } ) ;
686685 info ! ( "loading sanitizer: {}" , name) ;
687686
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) ;
689689
690690 // Sanity check the loaded crate to ensure it is indeed a sanitizer runtime
691691 if !data. root . sanitizer_runtime {
@@ -705,7 +705,8 @@ impl<'a> CrateLoader<'a> {
705705 info ! ( "loading profiler" ) ;
706706
707707 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) ;
709710
710711 // Sanity check the loaded crate to ensure it is indeed a profiler runtime
711712 if !data. root . profiler_runtime {
@@ -886,7 +887,7 @@ impl<'a> CrateLoader<'a> {
886887 DepKind :: Explicit
887888 } ;
888889
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 ) ;
890891
891892 let def_id = definitions. opt_local_def_id ( item. id ) . unwrap ( ) ;
892893 let path_len = definitions. def_path ( def_id. index ) . data . len ( ) ;
@@ -907,7 +908,7 @@ impl<'a> CrateLoader<'a> {
907908 }
908909
909910 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 ) ;
911912
912913 self . update_extern_crate (
913914 cnum,
@@ -925,7 +926,7 @@ impl<'a> CrateLoader<'a> {
925926 }
926927
927928 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 ( ) ?;
929930
930931 self . update_extern_crate (
931932 cnum,
0 commit comments