get rid of RefCell in TransitiveRelation by SparrowLii · Pull Request #99702 · rust-lang/rust (original) (raw)

Small perf changes:

--------------------------------------------------------------------------------
Ir        
--------------------------------------------------------------------------------
1,636,568  PROGRAM TOTALS

--------------------------------------------------------------------------------
Ir          file:function
--------------------------------------------------------------------------------
 5,438,542  ???:rustc_borrowck::type_check::free_region_relations::create
-3,075,341  ???:<rustc_borrowck::region_infer::RegionInferenceContext>::solve
 1,352,946  ???:<rustc_infer::infer::outlives::env::OutlivesEnvironment>::with_bounds::<alloc::boxed::Box<dyn core::iter::traits::iterator::Iterator<Item = rustc_middle::traits::query::OutlivesBound>>>
-1,081,605  ???:<alloc::rc::Rc<rustc_middle::traits::ObligationCauseCode> as core::ops::drop::Drop>::drop
 1,072,968  ???:<rustc_mir_dataflow::impls::MaybeInitializedPlaces as rustc_mir_dataflow::framework::Analysis>::into_engine
-1,068,823  ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeInitializedPlaces>>::new_gen_kill
 1,037,740  ???:<rustc_infer::infer::InferCtxtBuilder>::enter::<core::result::Result<alloc::vec::Vec<rustc_middle::ty::Predicate>, rustc_errors::ErrorGuaranteed>, rustc_trait_selection::traits::do_normalize_predicates::{closure
   887,900  ???:<rustc_mir_dataflow::impls::MaybeUninitializedPlaces as rustc_mir_dataflow::framework::Analysis>::into_engine
   881,271  ???:<rustc_mir_dataflow::impls::EverInitializedPlaces as rustc_mir_dataflow::framework::Analysis>::into_engine
   870,077  ???:<hashbrown::raw::RawTable<(rustc_span::def_id::DefId, (core::option::Option<rustc_middle::ty::Ty>, rustc_query_system::dep_graph::graph::DepNodeIndex))>>::reserve_rehash::<hashbrown::map::make_hasher<rustc_span::def_id::DefId, rustc_span::def_id::DefId, (core::option::Option<rustc_middle::ty::Ty>, rustc_query_system::dep_graph::graph::DepNodeIndex), core::hash::BuildHasherDefault<rustc_hash::FxHasher>>::{closure
  -869,973  ???:<hashbrown::raw::RawTable<(rustc_span::def_id::DefId, (rustc_middle::ty::adt::AdtDef, rustc_query_system::dep_graph::graph::DepNodeIndex))>>::reserve_rehash::<hashbrown::map::make_hasher<rustc_span::def_id::DefId, rustc_span::def_id::DefId, (rustc_middle::ty::adt::AdtDef, rustc_query_system::dep_graph::graph::DepNodeIndex), core::hash::BuildHasherDefault<rustc_hash::FxHasher>>::{closure
  -868,377  ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::EverInitializedPlaces>>::new_gen_kill
  -857,624  ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeUninitializedPlaces>>::new_gen_kill
  -708,799  ???:<rustc_infer::infer::outlives::env::OutlivesEnvironment as rustc_typeck::check::regionck::OutlivesEnvironmentExt>::add_implied_bounds
  -700,204  ???:<rustc_infer::infer::outlives::env::OutlivesEnvironment>::new
   662,528  ???:<rustc_infer::infer::outlives::env::OutlivesEnvironment>::builder

mostly inlining changes (new_gen_kill -> into_engine)