rust/compiler
bors a0e229abad Auto merge of #83649 - bjorn3:dedup_providers, r=petrochenkov
Don't duplicate the extern providers once for each crate

This should give a small perf improvement for small crates by avoiding a memcpy of a pretty big struct for each loaded crate. In addition would be useful for replacing the sequential `CrateNum` everywhere with the hash based `StableCrateId` introduced in #81635, which would allow avoiding remapping of `CrateNum`'s when loading crate metadata. While this PR is not strictly needed for that, it is necessary to prevent a performance loss due to it.

I think this duplication was done in https://github.com/rust-lang/rust/pull/40008 (which introduced the query system) to make it possible to compile multiple crates in a single session in the future. I think this is unlikely to be implemented any time soon. In addition this PR can easily be reverted if necessary to implement this.
2021-03-30 06:22:29 +00:00
..
rustc
rustc_apfloat
rustc_arena
rustc_ast
rustc_ast_lowering
rustc_ast_passes
rustc_ast_pretty
rustc_attr
rustc_builtin_macros
rustc_codegen_cranelift
rustc_codegen_llvm
rustc_codegen_ssa
rustc_data_structures Revert changes to sync data structures 2021-03-29 13:50:40 -04:00
rustc_driver
rustc_error_codes
rustc_errors
rustc_expand
rustc_feature
rustc_fs_util
rustc_graphviz
rustc_hir
rustc_hir_pretty
rustc_incremental
rustc_index
rustc_infer
rustc_interface Auto merge of #83649 - bjorn3:dedup_providers, r=petrochenkov 2021-03-30 06:22:29 +00:00
rustc_lexer
rustc_lint
rustc_lint_defs
rustc_llvm
rustc_macros
rustc_metadata
rustc_middle Rollup merge of #83643 - JohnTitor:is-freeze-no-longer-uses-span, r=RalfJung 2021-03-30 00:32:24 +02:00
rustc_mir Auto merge of #83185 - jyn514:remove-dead-code, r=oli-obk 2021-03-29 19:44:27 +00:00
rustc_mir_build
rustc_parse
rustc_parse_format
rustc_passes
rustc_plugin_impl
rustc_privacy
rustc_query_impl Don't duplicate the extern providers once for each crate 2021-03-29 18:03:07 +02:00
rustc_query_system
rustc_resolve
rustc_save_analysis
rustc_serialize
rustc_session
rustc_span
rustc_symbol_mangling
rustc_target
rustc_trait_selection
rustc_traits
rustc_ty_utils
rustc_type_ir
rustc_typeck