From 13877ac4428cc9cbf6b07ad98e0f0b152381fac7 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 24 Mar 2016 14:56:02 -0400 Subject: [PATCH] make available monomorphizations shared by CGU The current setup means that all generics are local to a codegen-unit, which means massive duplication. --- src/librustc_trans/trans/context.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/librustc_trans/trans/context.rs b/src/librustc_trans/trans/context.rs index 8f5572f5c4e0e..f232f1afea723 100644 --- a/src/librustc_trans/trans/context.rs +++ b/src/librustc_trans/trans/context.rs @@ -79,6 +79,7 @@ pub struct SharedCrateContext<'a, 'tcx: 'a> { mir_map: &'a MirMap<'tcx>, mir_cache: RefCell>>>, + available_monomorphizations: RefCell>, available_drop_glues: RefCell, String>>, use_dll_storage_attrs: bool, @@ -104,7 +105,6 @@ pub struct LocalCrateContext<'tcx> { /// Cache instances of monomorphic and polymorphic items instances: RefCell, ValueRef>>, monomorphizing: RefCell>, - available_monomorphizations: RefCell>, /// Cache generated vtables vtables: RefCell, ValueRef>>, /// Cache of constant strings, @@ -356,6 +356,7 @@ impl<'b, 'tcx> SharedCrateContext<'b, 'tcx> { }, check_overflow: check_overflow, check_drop_flag_for_sanity: check_drop_flag_for_sanity, + available_monomorphizations: RefCell::new(FnvHashSet()), available_drop_glues: RefCell::new(FnvHashMap()), use_dll_storage_attrs: use_dll_storage_attrs, translation_items: RefCell::new(FnvHashMap()), @@ -473,7 +474,6 @@ impl<'tcx> LocalCrateContext<'tcx> { external_srcs: RefCell::new(NodeMap()), instances: RefCell::new(FnvHashMap()), monomorphizing: RefCell::new(DefIdMap()), - available_monomorphizations: RefCell::new(FnvHashSet()), vtables: RefCell::new(FnvHashMap()), const_cstr_cache: RefCell::new(FnvHashMap()), const_unsized: RefCell::new(FnvHashMap()), @@ -723,7 +723,7 @@ impl<'b, 'tcx> CrateContext<'b, 'tcx> { } pub fn available_monomorphizations<'a>(&'a self) -> &'a RefCell> { - &self.local.available_monomorphizations + &self.shared.available_monomorphizations } pub fn available_drop_glues(&self) -> &RefCell, String>> {