@@ -102,13 +102,13 @@ where
102102
103103 let mut write = self . slot_map . write ( ) ;
104104 let entry = write. entry ( key. clone ( ) ) ;
105- let key_index = u32 :: try_from ( entry. index ( ) ) . unwrap ( ) ;
105+ let key_index = entry. index ( ) as u32 ;
106106 let database_key_index = DatabaseKeyIndex {
107107 group_index : self . group_index ,
108108 query_index : Q :: QUERY_INDEX ,
109109 key_index,
110110 } ;
111- entry. or_insert_with ( || Arc :: new ( Slot :: new ( key . clone ( ) , database_key_index) ) ) . clone ( )
111+ entry. or_insert_with ( || Arc :: new ( Slot :: new ( database_key_index) ) ) . clone ( )
112112 }
113113}
114114
@@ -131,34 +131,33 @@ where
131131 fn fmt_index (
132132 & self ,
133133 _db : & <Q as QueryDb < ' _ > >:: DynDb ,
134- index : DatabaseKeyIndex ,
134+ index : u32 ,
135135 fmt : & mut std:: fmt:: Formatter < ' _ > ,
136136 ) -> std:: fmt:: Result {
137- assert_eq ! ( index. group_index, self . group_index) ;
138- assert_eq ! ( index. query_index, Q :: QUERY_INDEX ) ;
139137 let slot_map = self . slot_map . read ( ) ;
140- let key = slot_map. get_index ( index. key_index as usize ) . unwrap ( ) . 0 ;
138+ let key = slot_map. get_index ( index as usize ) . unwrap ( ) . 0 ;
141139 write ! ( fmt, "{}({:?})" , Q :: QUERY_NAME , key)
142140 }
143141
144142 fn maybe_changed_after (
145143 & self ,
146144 db : & <Q as QueryDb < ' _ > >:: DynDb ,
147- input : DatabaseKeyIndex ,
145+ index : u32 ,
148146 revision : Revision ,
149147 ) -> bool {
150- assert_eq ! ( input. group_index, self . group_index) ;
151- assert_eq ! ( input. query_index, Q :: QUERY_INDEX ) ;
152148 debug_assert ! ( revision < db. salsa_runtime( ) . current_revision( ) ) ;
153- let slot = self . slot_map . read ( ) . get_index ( input. key_index as usize ) . unwrap ( ) . 1 . clone ( ) ;
154- slot. maybe_changed_after ( db, revision)
149+ let read = & self . slot_map . read ( ) ;
150+ let Some ( ( key, slot) ) = read. get_index ( index as usize ) else {
151+ return false ;
152+ } ;
153+ slot. maybe_changed_after ( db, revision, key)
155154 }
156155
157156 fn fetch ( & self , db : & <Q as QueryDb < ' _ > >:: DynDb , key : & Q :: Key ) -> Q :: Value {
158157 db. unwind_if_cancelled ( ) ;
159158
160159 let slot = self . slot ( key) ;
161- let StampedValue { value, durability, changed_at } = slot. read ( db) ;
160+ let StampedValue { value, durability, changed_at } = slot. read ( db, key ) ;
162161
163162 if let Some ( evicted) = self . lru_list . record_use ( & slot) {
164163 evicted. evict ( ) ;
@@ -182,7 +181,7 @@ where
182181 C : std:: iter:: FromIterator < TableEntry < Q :: Key , Q :: Value > > ,
183182 {
184183 let slot_map = self . slot_map . read ( ) ;
185- slot_map. values ( ) . filter_map ( |slot| slot. as_table_entry ( ) ) . collect ( )
184+ slot_map. iter ( ) . filter_map ( |( key , slot) | slot. as_table_entry ( key ) ) . collect ( )
186185 }
187186}
188187
0 commit comments