@@ -24,12 +24,46 @@ struct PossibleBorrowerAnalysis<'b, 'tcx> {
2424 possible_origin : FxHashMap < mir:: Local , HybridBitSet < mir:: Local > > ,
2525}
2626
27- #[ derive( Clone , Debug , Eq , PartialEq ) ]
27+ #[ derive( Clone , Debug ) ]
2828struct PossibleBorrowerState {
29- map : FxIndexMap < Local , BitSet < Local > > ,
29+ map : FxIndexMap < Local , HybridBitSet < Local > > ,
3030 domain_size : usize ,
3131}
3232
33+ // `PossibleBorrowerState`'s `PartialEq` implementation doesn't seem to be used currently.
34+ impl PartialEq for PossibleBorrowerState {
35+ fn eq ( & self , other : & Self ) -> bool {
36+ if self . domain_size != other. domain_size {
37+ return false ;
38+ }
39+ for ( borrowed, our_borrowers) in self . map . iter ( ) {
40+ if !other
41+ . map
42+ . get ( borrowed)
43+ . map_or ( our_borrowers. is_empty ( ) , |their_borrowers| {
44+ our_borrowers. iter ( ) . eq ( their_borrowers. iter ( ) )
45+ } )
46+ {
47+ return false ;
48+ }
49+ }
50+ for ( borrowed, their_borrowers) in other. map . iter ( ) {
51+ if !self
52+ . map
53+ . get ( borrowed)
54+ . map_or ( their_borrowers. is_empty ( ) , |our_borrowers| {
55+ their_borrowers. iter ( ) . eq ( our_borrowers. iter ( ) )
56+ } )
57+ {
58+ return false ;
59+ }
60+ }
61+ true
62+ }
63+ }
64+
65+ impl Eq for PossibleBorrowerState { }
66+
3367impl PossibleBorrowerState {
3468 fn new ( domain_size : usize ) -> Self {
3569 Self {
@@ -42,7 +76,7 @@ impl PossibleBorrowerState {
4276 fn add ( & mut self , borrowed : Local , borrower : Local ) {
4377 self . map
4478 . entry ( borrowed)
45- . or_insert ( BitSet :: new_empty ( self . domain_size ) )
79+ . or_insert_with ( || HybridBitSet :: new_empty ( self . domain_size ) )
4680 . insert ( borrower) ;
4781 }
4882}
@@ -64,7 +98,7 @@ impl JoinSemiLattice for PossibleBorrowerState {
6498 changed |= self
6599 . map
66100 . entry ( borrowed)
67- . or_insert ( BitSet :: new_empty ( self . domain_size ) )
101+ . or_insert_with ( || HybridBitSet :: new_empty ( self . domain_size ) )
68102 . union ( borrowers) ;
69103 }
70104 }
0 commit comments