@@ -102,13 +102,13 @@ where
102
102
103
103
let mut write = self . slot_map . write ( ) ;
104
104
let entry = write. entry ( key. clone ( ) ) ;
105
- let key_index = u32 :: try_from ( entry. index ( ) ) . unwrap ( ) ;
105
+ let key_index = entry. index ( ) as u32 ;
106
106
let database_key_index = DatabaseKeyIndex {
107
107
group_index : self . group_index ,
108
108
query_index : Q :: QUERY_INDEX ,
109
109
key_index,
110
110
} ;
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 ( )
112
112
}
113
113
}
114
114
@@ -131,34 +131,33 @@ where
131
131
fn fmt_index (
132
132
& self ,
133
133
_db : & <Q as QueryDb < ' _ > >:: DynDb ,
134
- index : DatabaseKeyIndex ,
134
+ index : u32 ,
135
135
fmt : & mut std:: fmt:: Formatter < ' _ > ,
136
136
) -> std:: fmt:: Result {
137
- assert_eq ! ( index. group_index, self . group_index) ;
138
- assert_eq ! ( index. query_index, Q :: QUERY_INDEX ) ;
139
137
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 ;
141
139
write ! ( fmt, "{}({:?})" , Q :: QUERY_NAME , key)
142
140
}
143
141
144
142
fn maybe_changed_after (
145
143
& self ,
146
144
db : & <Q as QueryDb < ' _ > >:: DynDb ,
147
- input : DatabaseKeyIndex ,
145
+ index : u32 ,
148
146
revision : Revision ,
149
147
) -> bool {
150
- assert_eq ! ( input. group_index, self . group_index) ;
151
- assert_eq ! ( input. query_index, Q :: QUERY_INDEX ) ;
152
148
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)
155
154
}
156
155
157
156
fn fetch ( & self , db : & <Q as QueryDb < ' _ > >:: DynDb , key : & Q :: Key ) -> Q :: Value {
158
157
db. unwind_if_cancelled ( ) ;
159
158
160
159
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 ) ;
162
161
163
162
if let Some ( evicted) = self . lru_list . record_use ( & slot) {
164
163
evicted. evict ( ) ;
@@ -182,7 +181,7 @@ where
182
181
C : std:: iter:: FromIterator < TableEntry < Q :: Key , Q :: Value > > ,
183
182
{
184
183
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 ( )
186
185
}
187
186
}
188
187
0 commit comments