@@ -8,7 +8,6 @@ use std::mem::MaybeUninit;
8
8
use std:: ops:: Deref ;
9
9
use std:: os:: unix:: prelude:: FileExt ;
10
10
use std:: path:: PathBuf ;
11
- use std:: pin:: Pin ;
12
11
use std:: sync:: atomic:: { self , AtomicUsize } ;
13
12
use std:: sync:: { Arc , Condvar , Mutex , RwLock , Weak } ;
14
13
@@ -29,7 +28,7 @@ type VectorPageBytes = [u8; VECTOR_PAGE_BYTE_SIZE];
29
28
30
29
struct LoadedVectorPage {
31
30
index : usize ,
32
- page : Pin < Box < VectorPage > > ,
31
+ page : Box < VectorPage > ,
33
32
}
34
33
35
34
struct PinnedVectorPage {
@@ -152,7 +151,7 @@ struct PageSpec {
152
151
}
153
152
154
153
struct PageArena {
155
- free : Mutex < Vec < Pin < Box < VectorPage > > > > ,
154
+ free : Mutex < Vec < Box < VectorPage > > > ,
156
155
loading : Mutex < HashMap < PageSpec , Arc < ( Condvar , Mutex < LoadState > ) > > > ,
157
156
loaded : RwLock < HashMap < PageSpec , PinnedVectorPage > > ,
158
157
cache : RwLock < LruCache < PageSpec , LoadedVectorPage > > ,
@@ -197,24 +196,24 @@ impl PageArena {
197
196
}
198
197
// TODO would be much better if we could have uninit allocs.
199
198
let mut free = self . free . lock ( ) . unwrap ( ) ;
200
- let zeroed = Box :: pin ( [ 0.0f32 ; VECTOR_PAGE_FLOAT_SIZE ] ) ;
199
+ let zeroed = Box :: new ( [ 0.0f32 ; VECTOR_PAGE_FLOAT_SIZE ] ) ;
201
200
for _ in 0 ..count - 1 {
202
201
free. push ( zeroed. clone ( ) ) ;
203
202
}
204
203
free. push ( zeroed) ;
205
204
}
206
205
207
- fn free_page_from_free ( & self ) -> Option < Pin < Box < VectorPage > > > {
206
+ fn free_page_from_free ( & self ) -> Option < Box < VectorPage > > {
208
207
let mut free = self . free . lock ( ) . unwrap ( ) ;
209
208
free. pop ( )
210
209
}
211
210
212
- fn free_page_from_cache ( & self ) -> Option < Pin < Box < VectorPage > > > {
211
+ fn free_page_from_cache ( & self ) -> Option < Box < VectorPage > > {
213
212
let mut cache = self . cache . write ( ) . unwrap ( ) ;
214
213
cache. pop_lru ( ) . map ( |p| p. 1 . page )
215
214
}
216
215
217
- fn free_page ( & self ) -> Option < Pin < Box < VectorPage > > > {
216
+ fn free_page ( & self ) -> Option < Box < VectorPage > > {
218
217
self . free_page_from_free ( )
219
218
. or_else ( || self . free_page_from_cache ( ) )
220
219
}
@@ -259,7 +258,7 @@ impl PageArena {
259
258
fn finish_loading (
260
259
self : & Arc < Self > ,
261
260
spec : PageSpec ,
262
- page : Pin < Box < VectorPage > > ,
261
+ page : Box < VectorPage > ,
263
262
) -> Arc < PageHandle > {
264
263
let index = spec. index ;
265
264
let handle = Arc :: new ( PageHandle {
@@ -290,7 +289,7 @@ impl PageArena {
290
289
handle
291
290
}
292
291
293
- fn cancel_loading ( & self , spec : PageSpec , page : Pin < Box < VectorPage > > ) {
292
+ fn cancel_loading ( & self , spec : PageSpec , page : Box < VectorPage > ) {
294
293
let mut free = self . free . lock ( ) . unwrap ( ) ;
295
294
free. push ( page) ;
296
295
std:: mem:: drop ( free) ;
0 commit comments