mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-06 00:34:23 +01:00
Keep free api consistent with try_alloc, size instead of pages
This commit is contained in:
@@ -326,18 +326,14 @@ impl PoolInner {
|
||||
// allocations of size `page_size` are more common, so we check that arena first.
|
||||
if let Some(arena) = self.page_arena.as_ref() {
|
||||
if arena_id == arena.id {
|
||||
let pages = size.div_ceil(arena.page_size);
|
||||
tracing::trace!("Freeing {} pages from arena {}", pages, arena_id);
|
||||
arena.free(page_idx, pages);
|
||||
arena.free(page_idx, size);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// check WAL frame arena
|
||||
if let Some(wal_arena) = self.wal_frame_arena.as_ref() {
|
||||
if arena_id == wal_arena.id {
|
||||
let pages = size.div_ceil(wal_arena.page_size);
|
||||
tracing::trace!("Freeing {} pages from WAL frame arena {}", pages, arena_id);
|
||||
wal_arena.free(page_idx, pages);
|
||||
wal_arena.free(page_idx, size);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -439,9 +435,10 @@ impl Arena {
|
||||
)))
|
||||
}
|
||||
|
||||
/// Mark `count` pages starting at `page_idx` as free.
|
||||
pub fn free(&self, page_idx: u32, count: usize) {
|
||||
/// Mark all relevant pages that include `size` starting at `page_idx` as free.
|
||||
pub fn free(&self, page_idx: u32, size: usize) {
|
||||
let mut bm = self.free_pages.lock();
|
||||
let count = size.div_ceil(self.page_size);
|
||||
turso_assert!(
|
||||
!bm.check_run_free(page_idx, count as u32),
|
||||
"must not already be marked free"
|
||||
|
||||
Reference in New Issue
Block a user