Unsized deletions + custom sizes back
[?]
Feb 3, 2021, 8:34 PM
APPY2E7M5NHNC6MFYXSVEKJVAILK7YAZVTVE3W75EK2JNFVS3XBQCDependencies
- [2]
6UVFCERMFormatting, debugging, etc. - [3]
X3QVVQISMore debugging (del seems to work now) - [4]
QEUTVAZ4Splitting btree::page - [5]
DV4A2LR7Double-inserts (rebalancing near an internal deletion) - [6]
OP6SVMODResetting history - [7]
OTWDDJE7Trait/type cleanup - [8]
WS4ZQM4RDebugging, tests, etc. - [9]
H3FVSQIQUnsized pages
Change contents
- edit in sanakirja-core/src/btree/page_unsized.rs at line 37
type Saved = (*const K, *const V);fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved {(k as *const K, v as *const V)}unsafe fn from_saved<'a>(s: &Self::Saved) -> (&'a K, &'a V) {(&*s.0, &*s.1)} - replacement in sanakirja-core/src/btree/page_unsized.rs at line 60
if m.c1.is_leaf {if m.ins2.is_some() {occupied += 4;} else {occupied += 2;}} else if m.ins2.is_some() {if m.ins2.is_some() { - edit in sanakirja-core/src/btree/page.rs at line 22
fn tuple_size<K: Representable, V: Representable>() -> usize {let s = ((K::SIZE.unwrap() + V::ALIGN - 1) & !(V::ALIGN - 1)) + V::SIZE.unwrap();let al = K::ALIGN.max(V::ALIGN);(s + al - 1) & !(al - 1)} - replacement in sanakirja-core/src/btree/page.rs at line 29
pub struct Page<K, V> {kv: core::marker::PhantomData<(K, V)>,}pub struct Page<K, V>(super::page_unsized::Page<K, V>); - replacement in sanakirja-core/src/btree/page.rs at line 35
debug!("init {:?}", page);let h = header_mut(page);h.init();debug!("init: {:?}", h);<super::page_unsized::Page<K, V>>::init(page) - replacement in sanakirja-core/src/btree/page.rs at line 39
let hdr = header_mut(page);hdr.clean();<super::page_unsized::Page<K, V>>::clean(page)}type Saved = (K, V);fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved {unsafe {let mut k0 = core::mem::MaybeUninit::uninit();let mut v0 = core::mem::MaybeUninit::uninit();core::ptr::copy_nonoverlapping(k, k0.as_mut_ptr(), 1);core::ptr::copy_nonoverlapping(v, v0.as_mut_ptr(), 1);(k0.assume_init(), v0.assume_init())} - edit in sanakirja-core/src/btree/page.rs at line 53
unsafe fn from_saved<'a>(s: &Self::Saved) -> (&'a K, &'a V) {(core::mem::transmute(&s.0), core::mem::transmute(&s.1))} - edit in sanakirja-core/src/btree/page.rs at line 77
// If m is an internal node, there is an extra cost,// which doesn't exist if m is a leaf. - replacement in sanakirja-core/src/btree/page.rs at line 151
let b = if Self::is_dirty(page.as_page()) { 1 } else { 0 };freed = page.offset | b;freed = page.offset | if Self::is_dirty(page.as_page()) { 1 } else { 0 }; - replacement in sanakirja-core/src/btree/page.rs at line 175
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page.rs at line 230
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page.rs at line 345
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page.rs at line 369
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page.rs at line 381
core::mem::size_of::<Tuple<K, V>>()tuple_size::<K, V>() - replacement in sanakirja-core/src/btree/page.rs at line 436
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page.rs at line 630
let size = core::mem::size_of::<Tuple<K, V>>();let size = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page/rebalance.rs at line 52
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page/put.rs at line 64
let s = core::mem::size_of::<Tuple<K, V>>();let s = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page/alloc.rs at line 62
let size = core::mem::size_of::<Tuple<K, V>>();let size = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page/alloc.rs at line 76
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page/alloc.rs at line 100
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page/alloc.rs at line 145
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - replacement in sanakirja-core/src/btree/page/alloc.rs at line 219
let f = core::mem::size_of::<Tuple<K, V>>();let f = tuple_size::<K, V>(); - edit in sanakirja-core/src/btree/mod.rs at line 140
type Saved;fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved;unsafe fn from_saved<'a>(s: &Self::Saved) -> (&'a K, &'a V); - replacement in sanakirja-core/src/btree/del.rs at line 21
K: Representable + core::fmt::Debug,V: Representable + core::fmt::Debug,K: Representable + ?Sized + core::fmt::Debug,V: Representable + ?Sized + core::fmt::Debug, - replacement in sanakirja-core/src/btree/del.rs at line 40
K: Representable + core::fmt::Debug,V: Representable + core::fmt::Debug,K: Representable + ?Sized + core::fmt::Debug,V: Representable + ?Sized + core::fmt::Debug, - replacement in sanakirja-core/src/btree/del.rs at line 71
let mut k0 = MaybeUninit::uninit();let mut v0 = MaybeUninit::uninit();let (mut last_op, k0v0) = leaf_delete(txn, cursor, p0, &mut k0, &mut v0)?;let (mut last_op, k0v0) = leaf_delete(txn, cursor, p0)?; - replacement in sanakirja-core/src/btree/del.rs at line 85
let mut concat = concat(txn, cursor, p0, k0v0, last_op)?;let mut concat = concat(txn, cursor, p0, &k0v0, last_op)?; - replacement in sanakirja-core/src/btree/del.rs at line 97
last_op = handle_merge(txn, cursor, p0, k0v0, mil, merge, &mut free)?;last_op = handle_merge(txn, cursor, p0, &k0v0, mil, merge, &mut free)?; - replacement in sanakirja-core/src/btree/del.rs at line 131
K: Representable,V: Representable,K: Representable + ?Sized,V: Representable + ?Sized, - replacement in sanakirja-core/src/btree/del.rs at line 161
K: Representable + core::fmt::Debug,V: Representable + core::fmt::Debug,K: Representable + ?Sized + core::fmt::Debug,V: Representable + ?Sized + core::fmt::Debug, - replacement in sanakirja-core/src/btree/del.rs at line 168
k0: &'a mut MaybeUninit<K>,v0: &'a mut MaybeUninit<V>,) -> Result<(ModifiedPage<'a, K, V, P>, Option<(&'a K, &'a V)>), T::Error> {) -> Result<(ModifiedPage<'a, K, V, P>, Option<P::Saved>), T::Error> { - replacement in sanakirja-core/src/btree/del.rs at line 193
if K::SIZE.is_some() && V::SIZE.is_some() {core::ptr::copy_nonoverlapping(k, k0.as_mut_ptr(), 1);core::ptr::copy_nonoverlapping(v, v0.as_mut_ptr(), 1);deleted = Some((&*k0.as_ptr(), &*v0.as_ptr()))} else {deleted = Some((k, v))}deleted = Some(P::save_deleted_leaf_entry(k, v)) - replacement in sanakirja-core/src/btree/del.rs at line 215
K: Representable,V: Representable,K: Representable + ?Sized,V: Representable + ?Sized, - replacement in sanakirja-core/src/btree/del.rs at line 222
k0v0: Option<(&'a K, &'a V)>,k0v0: &Option<P::Saved>, - replacement in sanakirja-core/src/btree/del.rs at line 229
if let Some((k0, v0)) = k0v0 {if let Some(s) = k0v0 {let (k0, v0) = unsafe { P::from_saved(s) }; - replacement in sanakirja-core/src/btree/del.rs at line 267
K: Representable,V: Representable,K: Representable + ?Sized,V: Representable + ?Sized, - replacement in sanakirja-core/src/btree/del.rs at line 274
k0v0: Option<(&'a K, &'a V)>,k0v0: &Option<P::Saved>, - replacement in sanakirja-core/src/btree/del.rs at line 321
last_op.ins = k0v0;if let Some(k0v0) = k0v0 {last_op.ins = Some(unsafe { P::from_saved(k0v0) });} - replacement in sanakirja-core/src/btree/del.rs at line 350
last_op.ins = k0v0;if let Some(k0v0) = k0v0 {last_op.ins = Some(unsafe { P::from_saved(k0v0) });} - replacement in sanakirja-core/src/btree/del.rs at line 369
let split_key_is_k0 = if let Some((k0, _)) = k0v0 {let split_key_is_k0 = if let Some(k0v0) = k0v0 {let (k0, _) = unsafe { P::from_saved(k0v0) }; - replacement in sanakirja-core/src/btree/del.rs at line 394
fn modify_rc<T: AllocPage + LoadPage, K: Representable, V: Representable, P: BTreePage<K, V>>(fn modify_rc<T: AllocPage + LoadPage,K: Representable + ?Sized,V: Representable + ?Sized,P: BTreePage<K, V>,>( - replacement in sanakirja-core/src/btree/del.rs at line 483
K: Representable + core::fmt::Debug,V: Representable + core::fmt::Debug,K: Representable + ?Sized + core::fmt::Debug,V: Representable + ?Sized + core::fmt::Debug, - replacement in sanakirja-core/src/btree/del.rs at line 490
k0v0: Option<(&K, &V)>,k0v0: Option<P::Saved>, - replacement in sanakirja-core/src/btree/del.rs at line 535
let split_key_is_k0 = if let Some((k0, _)) = k0v0 {let split_key_is_k0 = if let Some(ref k0v0) = k0v0 {let (k0, _) = unsafe { P::from_saved(k0v0) };