Skip to content

Commit c7b37fd

Browse files
committed
Update foreign_modules and dllimport_foreign_items
1 parent 9657151 commit c7b37fd

File tree

5 files changed

+13
-9
lines changed

5 files changed

+13
-9
lines changed

src/librustc/arena.rs

+2
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ macro_rules! arena_types {
9494
[few] get_lib_features: rustc::middle::lib_features::LibFeatures,
9595
[few] defined_lib_features: rustc::middle::lang_items::LanguageItems,
9696
[few] visible_parent_map: rustc::util::nodemap::DefIdMap<rustc::hir::def_id::DefId>,
97+
[few] foreign_module: rustc::middle::cstore::ForeignModule,
98+
[few] foreign_modules: Vec<rustc::middle::cstore::ForeignModule>,
9799
], $tcx);
98100
)
99101
}

src/librustc/query/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ rustc_queries! {
691691
}
692692

693693
Other {
694-
query foreign_modules(_: CrateNum) -> Lrc<Vec<ForeignModule>> {
694+
query foreign_modules(_: CrateNum) -> &'tcx [ForeignModule] {
695695
desc { "looking up the foreign modules of a linked crate" }
696696
}
697697

@@ -738,7 +738,7 @@ rustc_queries! {
738738

739739
Other {
740740
query dllimport_foreign_items(_: CrateNum)
741-
-> Lrc<FxHashSet<DefId>> {
741+
-> &'tcx FxHashSet<DefId> {
742742
desc { "dllimport_foreign_items" }
743743
}
744744
query is_dllimport_foreign_item(_: DefId) -> bool {}

src/librustc_codegen_ssa/base.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ use rustc_mir::monomorphize::Instance;
3333
use rustc_mir::monomorphize::partitioning::{CodegenUnit, CodegenUnitExt};
3434
use rustc::util::nodemap::FxHashMap;
3535
use rustc_data_structures::indexed_vec::Idx;
36-
use rustc_data_structures::sync::Lrc;
3736
use rustc_codegen_utils::{symbol_names_test, check_for_rustc_errors_attr};
3837
use rustc::ty::layout::{FAT_PTR_ADDR, FAT_PTR_EXTRA};
3938
use crate::mir::place::PlaceRef;
@@ -916,7 +915,7 @@ pub fn provide_both(providers: &mut Providers<'_>) {
916915
.map(|id| &module_map[&id])
917916
.flat_map(|module| module.foreign_items.iter().cloned())
918917
.collect();
919-
Lrc::new(dllimports)
918+
tcx.arena.alloc(dllimports)
920919
};
921920

922921
providers.is_dllimport_foreign_item = |tcx, def_id| {

src/librustc_metadata/cstore_impl.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ provide! { <'tcx> tcx, def_id, other, cdata,
193193
Lrc::new(reachable_non_generics)
194194
}
195195
native_libraries => { Lrc::new(cdata.get_native_libraries(tcx.sess)) }
196-
foreign_modules => { Lrc::new(cdata.get_foreign_modules(tcx.sess)) }
196+
foreign_modules => { cdata.get_foreign_modules(tcx) }
197197
plugin_registrar_fn => {
198198
cdata.root.plugin_registrar_fn.map(|index| {
199199
DefId { krate: def_id.krate, index }
@@ -290,7 +290,7 @@ pub fn provide<'tcx>(providers: &mut Providers<'tcx>) {
290290
},
291291
foreign_modules: |tcx, cnum| {
292292
assert_eq!(cnum, LOCAL_CRATE);
293-
Lrc::new(foreign_modules::collect(tcx))
293+
&tcx.arena.alloc(foreign_modules::collect(tcx))[..]
294294
},
295295
link_args: |tcx, cnum| {
296296
assert_eq!(cnum, LOCAL_CRATE);

src/librustc_metadata/decoder.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -1084,12 +1084,15 @@ impl<'a, 'tcx> CrateMetadata {
10841084
}
10851085
}
10861086

1087-
pub fn get_foreign_modules(&self, sess: &Session) -> Vec<ForeignModule> {
1087+
pub fn get_foreign_modules(
1088+
&self,
1089+
tcx: TyCtxt<'_, 'tcx, '_>,
1090+
) -> &'tcx [ForeignModule] {
10881091
if self.proc_macros.is_some() {
10891092
// Proc macro crates do not have any *target* foreign modules.
1090-
vec![]
1093+
&[]
10911094
} else {
1092-
self.root.foreign_modules.decode((self, sess)).collect()
1095+
tcx.arena.alloc_from_iter(self.root.foreign_modules.decode((self, tcx.sess)))
10931096
}
10941097
}
10951098

0 commit comments

Comments
 (0)