pijul nest
guest [sign in]

Making as_page() unsafe

[?]
Feb 13, 2021, 3:40 PM
ESUI5EUZUBDPHNN3APU33IFORYPYR6J3WEMEZG57FKF3EH66ZBHAC

Dependencies

  • [2] HN6Z5DU4 Cleanup
  • [3] H3FVSQIQ Unsized pages
  • [4] LROAI3NB Two iterators (convenience functions), along with tests to move cursors (put and del still destroy cursors though)
  • [5] ONES3V46 reference counting works for put
  • [6] UUUVNC4D Debugging/cleanup around cursors
  • [7] AOX2XQIS Actually, with the correct functions, Unsized pages are always slower than Sized pages (especially for writing)
  • [8] RV2L6CZW A few comments
  • [9] QEUTVAZ4 Splitting btree::page
  • [10] W26CFMAQ Improving safety of cursors
  • [11] SO25TWFL A few features for integrating it into Pijul
  • [12] EAAYH6BQ Debugging put
  • [13] OFINGD26 implementing prev() on cursors (+ some cleanup)
  • [14] PXF3R6SV Improving test coverage for btree::cursor
  • [15] KM3JAFGP Adding a test for next/prev
  • [16] WS4ZQM4R Debugging, tests, etc.
  • [17] OP6SVMOD Resetting history
  • [18] T73WR2BX Cleaner RC increments for keys and values containing references + more comments in `del`
  • [19] X3QVVQIS More debugging (del seems to work now)
  • [20] G4JEQLLX Debugging synchronisation
  • [21] Q7DRIBBR Debugging replace (which cannot be del+put)
  • [22] 6UVFCERM Formatting, debugging, etc.
  • [23] 73Z2UB3J Cleanup + comments
  • [24] 6DCQHIFP Minor changes after benchmarking
  • [25] KMT3MF5N Drop a database
  • [26] 6DMPXOAT More debugging
  • [27] DV4A2LR7 Double-inserts (rebalancing near an internal deletion)
  • [28] OTWDDJE7 Trait/type cleanup
  • [29] KX3WVNZW Testing/debugging "rebalance causes split of the root"
  • [30] XEU2QVLC Debugging after plugging this into Pijul
  • [31] APPY2E7M Unsized deletions + custom sizes back
  • [32] NXMFNPZ7 Comments + debugging drop

Change contents

  • replacement in sanakirja-core/src/lib.rs at line 165
    [3.412][3.412:448]()
    pub fn as_page(&self) -> Page {
    [3.412]
    [2.1509]
    pub unsafe fn as_page(&self) -> Page {
  • replacement in sanakirja-core/src/lib.rs at line 167
    [2.1524][2.1524:1594]()
    data: unsafe { &*(self.data as *const [u8; PAGE_SIZE]) },
    [2.1524]
    [2.1594]
    data: &*(self.data as *const [u8; PAGE_SIZE]),
  • replacement in sanakirja-core/src/btree/put.rs at line 209
    [2.2136][3.1067:1125](),[3.3667][3.1067:1125](),[3.380][3.1067:1125](),[3.110][3.1067:1125](),[3.1067][3.1067:1125]()
    let left = P::left_child(cur.page.as_page(), &c);
    [2.2136]
    [3.3668]
    let left = P::left_child(unsafe { cur.page.as_page() }, &c);
  • replacement in sanakirja-core/src/btree/put.rs at line 216
    [3.3887][3.1136:1215](),[3.8332][3.1136:1215]()
    while let Some((k, v, r)) = P::next(txn, cur.page.as_page(), &mut c) {
    [3.3887]
    [3.8397]
    while let Some((k, v, r)) = P::next(txn, unsafe { cur.page.as_page() }, &mut c) {
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 97
    [3.5268][3.5268:5333]()
    let l = header(page.as_page()).left_page() & !0xfff;
    [3.5268]
    [3.5333]
    let l = header(unsafe { page.as_page() }).left_page() & !0xfff;
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 100
    [3.5411][3.5411:5479]()
    let s = Internal::offset_slice::<K, V>(page.as_page());
    [3.5411]
    [3.5479]
    let s = Internal::offset_slice::<K, V>(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 102
    [3.5506][3.5506:5580]()
    clone::<K, V, Internal>(page.as_page(), &mut new, s, &mut n);
    [3.5506]
    [2.2189]
    clone::<K, V, Internal>(unsafe { page.as_page() }, &mut new, s, &mut n);
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 198
    [3.9028][3.9028:9077]()
    let hdr = header(m.other.as_page());
    [3.9028]
    [3.9077]
    let hdr = header(unsafe { m.other.as_page() });
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 224
    [2.2466][3.10286:10363](),[3.1214][3.10286:10363](),[3.106][3.10286:10363](),[3.10286][3.10286:10363]()
    let first_size = <Page<K, V>>::current_size(m.other.as_page(), &rc);
    [2.2466]
    [3.10363]
    let first_size = <Page<K, V>>::current_size(unsafe { m.other.as_page() }, &rc);
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 271
    [3.722][3.722:766]()
    let hdr = header(m.page.as_page());
    [3.722]
    [3.766]
    let hdr = header(unsafe { m.page.as_page() });
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 283
    [3.1117][3.1117:1215]()
    total -= <Page<K, V> as BTreePage<K, V>>::current_size(m.page.as_page(), &m.c1) as usize;
    [3.1117]
    [3.1215]
    total -= <Page<K, V> as BTreePage<K, V>>::current_size(unsafe { m.page.as_page() }, &m.c1)
    as usize;
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 548
    [3.19262][3.19262:19416]()
    let mut l = <Page<K, V>>::left_child(m.page.as_page(), &m.c0);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.page.as_page(), &mut m.c0) {
    [3.19262]
    [3.19416]
    let mut l = <Page<K, V>>::left_child(unsafe { m.page.as_page() }, &m.c0);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.page.as_page() }, &mut m.c0) {
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 564
    [3.19817][3.19817:19904]()
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.page.as_page(), &mut m.c1) {
    [3.19817]
    [3.19904]
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.page.as_page() }, &mut m.c1) {
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 588
    [2.2962][3.20467:20533](),[3.4309][3.20467:20533](),[3.620][3.20467:20533](),[3.20467][3.20467:20533]()
    let l = <Page<K, V>>::left_child(m.other.as_page(), &rc);
    [2.2962]
    [3.20533]
    let l = <Page<K, V>>::left_child(unsafe { m.other.as_page() }, &rc);
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 590
    [3.20596][3.20596:20686]()
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.other.as_page(), &mut rc) {
    [3.20596]
    [3.20686]
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.other.as_page() }, &mut rc) {
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 595
    [2.3014][3.20832:20992](),[3.4366][3.20832:20992](),[3.681][3.20832:20992](),[3.20832][3.20832:20992]()
    let mut l = <Page<K, V>>::left_child(m.other.as_page(), &rc);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.other.as_page(), &mut rc) {
    [2.3014]
    [3.20992]
    let mut l = <Page<K, V>>::left_child(unsafe { m.other.as_page() }, &rc);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.other.as_page() }, &mut rc) {
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 19
    [2.3065][3.23384:23447](),[3.4470][3.23384:23447](),[3.741][3.23384:23447](),[3.23384][3.23384:23447](),[3.23447][3.4471:4552]()
    let rl = <Page<K, V>>::left_child(m.other.as_page(), &rc);
    let (k, v, r) = <Page<K, V>>::current(txn, m.other.as_page(), &rc).unwrap();
    [2.3065]
    [3.23540]
    let rl = <Page<K, V>>::left_child(unsafe { m.other.as_page() }, &rc);
    let (k, v, r) = <Page<K, V>>::current(txn, unsafe { m.other.as_page() }, &rc).unwrap();
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 38
    [3.225][3.225:299]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.225]
    [3.299]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 58
    [3.812][3.2038:2108]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.812]
    [3.877]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 80
    [3.2606][3.24623:24670](),[3.24623][3.24623:24670]()
    let hdr = &*header(m.other.as_page());
    [3.2606]
    [3.24670]
    let hdr = &*header(unsafe { m.other.as_page() });
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 106
    [3.25320][3.802:859](),[3.859][3.4662:4746](),[3.4662][3.4662:4746]()
    let lc = super::PageCursor::last(m.other.as_page());
    let (k0, v0, r0) = <Page<K, V>>::current(txn, m.other.as_page(), &lc).unwrap();
    [3.25320]
    [3.25475]
    let lc = super::PageCursor::last(unsafe { m.other.as_page() });
    let (k0, v0, r0) = <Page<K, V>>::current(txn, unsafe { m.other.as_page() }, &lc).unwrap();
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 111
    [2.3175][3.25584:25655](),[3.4810][3.25584:25655](),[3.927][3.25584:25655](),[3.25584][3.25584:25655]()
    let rl = <Page<K, V>>::left_child(m.modified.page.as_page(), &rc);
    [2.3175]
    [3.25655]
    let rl = <Page<K, V>>::left_child(unsafe { m.modified.page.as_page() }, &rc);
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 129
    [3.1252][3.1252:1326]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.1252]
    [3.1326]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 149
    [3.1533][3.2759:2829]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.1533]
    [3.1599]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 177
    [3.3180][3.26665:26712](),[3.26665][3.26665:26712]()
    let hdr = &*header(m.other.as_page());
    [3.3180]
    [3.26712]
    let hdr = &*header(unsafe { m.other.as_page() });
  • replacement in sanakirja-core/src/btree/page_unsized/put.rs at line 30
    [3.3328][3.3328:3411]()
    let cur_size = Internal::current_size::<K, V>(page.as_page(), u as isize);
    [3.3328]
    [3.3411]
    let cur_size = Internal::current_size::<K, V>(unsafe { page.as_page() }, u as isize);
  • replacement in sanakirja-core/src/btree/page_unsized/put.rs at line 35
    [3.3495][3.27545:27583](),[3.27545][3.27545:27583]()
    let hdr = header(page.as_page());
    [3.3495]
    [3.27583]
    let hdr = header(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page_unsized/put.rs at line 38
    [3.27674][3.2402:2477]()
    if mutable && is_dirty && L::can_alloc(header(page.as_page()), size) {
    [3.27674]
    [3.27757]
    if mutable && is_dirty && L::can_alloc(header(unsafe { page.as_page() }), size) {
  • replacement in sanakirja-core/src/btree/page_unsized/put.rs at line 68
    [3.28439][3.28439:28496]()
    let s = L::offset_slice::<K, V>(page.as_page());
    [3.28439]
    [3.28496]
    let s = L::offset_slice::<K, V>(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page_unsized/put.rs at line 72
    [3.28566][3.28566:28630]()
    clone::<K, V, L>(page.as_page(), &mut new, s0, &mut n);
    [3.28566]
    [3.28630]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut new, s0, &mut n);
  • replacement in sanakirja-core/src/btree/page_unsized/put.rs at line 79
    [3.28882][3.28882:28946]()
    clone::<K, V, L>(page.as_page(), &mut new, s1, &mut n);
    [3.28882]
    [3.53]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut new, s1, &mut n);
  • replacement in sanakirja-core/src/btree/page_unsized/put.rs at line 88
    [3.29136][3.4156:4253]()
    return split_unsized::<_, _, _, L>(txn, page.as_page(), replace, u, k0, v0, k1v1, l, r);
    [3.29136]
    [3.29224]
    return split_unsized::<_, _, _, L>(
    txn,
    unsafe { page.as_page() },
    replace,
    u,
    k0,
    v0,
    k1v1,
    l,
    r,
    );
  • replacement in sanakirja-core/src/btree/page.rs at line 265
    [3.1693][3.255:320](),[3.2360][3.255:320]()
    let l = header(page.as_page()).left_page() & !0xfff;
    [3.1693]
    [3.320]
    let l = header(unsafe { page.as_page() }).left_page() & !0xfff;
  • replacement in sanakirja-core/src/btree/page.rs at line 268
    [3.328][3.2360:2431](),[3.403][3.2360:2431](),[3.2360][3.2360:2431]()
    let s = Internal::offset_slice::<T, K, V>(page.as_page());
    [3.328]
    [3.2431]
    let s = Internal::offset_slice::<T, K, V>(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page.rs at line 270
    [3.2458][3.1694:1768]()
    clone::<K, V, Internal>(page.as_page(), &mut new, s, &mut n);
    [3.2458]
    [2.3656]
    clone::<K, V, Internal>(unsafe { page.as_page() }, &mut new, s, &mut n);
  • replacement in sanakirja-core/src/btree/page.rs at line 373
    [3.5253][3.5253:5302]()
    let hdr = header(m.other.as_page());
    [3.5253]
    [3.16415]
    let hdr = header(unsafe { m.other.as_page() });
  • replacement in sanakirja-core/src/btree/page.rs at line 395
    [2.3947][3.5843:5920](),[3.5687][3.5843:5920](),[3.1076][3.5843:5920](),[3.5843][3.5843:5920]()
    let first_size = <Page<K, V>>::current_size(m.other.as_page(), &rc);
    [2.3947]
    [3.3352]
    let first_size = <Page<K, V>>::current_size(unsafe { m.other.as_page() }, &rc);
  • replacement in sanakirja-core/src/btree/page.rs at line 440
    [3.7721][3.7721:7765]()
    let hdr = header(m.page.as_page());
    [3.7721]
    [3.7765]
    let hdr = header(unsafe { m.page.as_page() });
  • replacement in sanakirja-core/src/btree/page.rs at line 457
    [3.8236][3.8236:8334]()
    total -= <Page<K, V> as BTreePage<K, V>>::current_size(m.page.as_page(), &m.c1) as usize;
    [3.8236]
    [3.26184]
    total -= <Page<K, V> as BTreePage<K, V>>::current_size(unsafe { m.page.as_page() }, &m.c1)
    as usize;
  • replacement in sanakirja-core/src/btree/page.rs at line 579
    [3.1818][3.20117:20184](),[3.34802][3.20117:20184](),[3.20184][3.5550:5637]()
    let mut l = <Page<K, V>>::left_child(m.page.as_page(), &m.c0);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.page.as_page(), &mut m.c0) {
    [3.34802]
    [3.5637]
    let mut l = <Page<K, V>>::left_child(unsafe { m.page.as_page() }, &m.c0);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.page.as_page() }, &mut m.c0) {
  • replacement in sanakirja-core/src/btree/page.rs at line 595
    [3.35214][3.5846:5933]()
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.page.as_page(), &mut m.c1) {
    [3.35214]
    [3.35287]
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.page.as_page() }, &mut m.c1) {
  • replacement in sanakirja-core/src/btree/page.rs at line 619
    [2.5784][3.20657:20723](),[3.7920][3.20657:20723](),[3.1310][3.20657:20723](),[3.20657][3.20657:20723]()
    let l = <Page<K, V>>::left_child(m.other.as_page(), &rc);
    [2.5784]
    [3.6208]
    let l = <Page<K, V>>::left_child(unsafe { m.other.as_page() }, &rc);
  • replacement in sanakirja-core/src/btree/page.rs at line 621
    [3.6271][3.6271:6361]()
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.other.as_page(), &mut rc) {
    [3.6271]
    [3.6361]
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.other.as_page() }, &mut rc) {
  • replacement in sanakirja-core/src/btree/page.rs at line 626
    [2.5836][3.21005:21075](),[3.7977][3.21005:21075](),[3.1371][3.21005:21075](),[3.21005][3.21005:21075](),[3.21075][3.6417:6507]()
    let mut l = <Page<K, V>>::left_child(m.other.as_page(), &rc);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, m.other.as_page(), &mut rc) {
    [2.5836]
    [3.6507]
    let mut l = <Page<K, V>>::left_child(unsafe { m.other.as_page() }, &rc);
    while let Some((k, v, r)) = <Page<K, V>>::next(txn, unsafe { m.other.as_page() }, &mut rc) {
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 18
    [2.5887][3.883:946](),[3.8033][3.883:946](),[3.1431][3.883:946](),[3.883][3.883:946](),[3.946][3.8034:8115]()
    let rl = <Page<K, V>>::left_child(m.other.as_page(), &rc);
    let (k, v, r) = <Page<K, V>>::current(txn, m.other.as_page(), &rc).unwrap();
    [2.5887]
    [3.1034]
    let rl = <Page<K, V>>::left_child(unsafe { m.other.as_page() }, &rc);
    let (k, v, r) = <Page<K, V>>::current(txn, unsafe { m.other.as_page() }, &rc).unwrap();
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 37
    [3.2040][3.2040:2114]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.2040]
    [3.2114]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 57
    [3.7977][3.7977:8047]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.7977]
    [3.8047]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 71
    [3.2548][3.2548:2613]()
    let b = if header(new_left.0.as_page()).is_dirty() {
    [3.2548]
    [3.2613]
    let b = if header(unsafe { new_left.0.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 83
    [3.1869][3.1869:1916]()
    let right_hdr = header(m.other.as_page());
    [3.2798]
    [3.1754]
    let right_hdr = header(unsafe { m.other.as_page() });
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 115
    [3.8290][3.8290:8341]()
    let hdr = &*header(m.other.as_page());
    [3.8290]
    [3.8341]
    let hdr = &*header(unsafe { m.other.as_page() });
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 143
    [3.4231][3.1492:1542](),[3.1542][3.8218:8302](),[3.8218][3.8218:8302]()
    let lc = PageCursor::last(m.other.as_page());
    let (k0, v0, r0) = <Page<K, V>>::current(txn, m.other.as_page(), &lc).unwrap();
    [3.4231]
    [3.4381]
    let lc = PageCursor::last(unsafe { m.other.as_page() });
    let (k0, v0, r0) = <Page<K, V>>::current(txn, unsafe { m.other.as_page() }, &lc).unwrap();
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 148
    [2.5997][3.4490:4561](),[3.8366][3.4490:4561](),[3.1610][3.4490:4561](),[3.4490][3.4490:4561]()
    let rl = <Page<K, V>>::left_child(m.modified.page.as_page(), &rc);
    [2.5997]
    [3.4561]
    let rl = <Page<K, V>>::left_child(unsafe { m.modified.page.as_page() }, &rc);
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 165
    [3.5094][3.2962:3032]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.5094]
    [3.3032]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 184
    [3.3205][3.8631:8701]()
    let b = if header(m.modified.page.as_page()).is_dirty() {
    [3.3205]
    [3.3271]
    let b = if header(unsafe { m.modified.page.as_page() }).is_dirty() {
  • replacement in sanakirja-core/src/btree/page/rebalance.rs at line 213
    [3.9052][3.5571:5618](),[3.5571][3.5571:5618]()
    let hdr = &*header(m.other.as_page());
    [3.9052]
    [3.5618]
    let hdr = &*header(unsafe { m.other.as_page() });
  • replacement in sanakirja-core/src/btree/page/put.rs at line 27
    [3.6458][3.6458:6496]()
    let hdr = header(page.as_page());
    [3.6458]
    [3.6496]
    let hdr = header(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page/put.rs at line 29
    [3.6587][3.6141:6224]()
    if mutable && is_dirty && L::can_alloc::<K, V>(header(page.as_page()), size) {
    [3.6531]
    [3.9104]
    if mutable && is_dirty && L::can_alloc::<K, V>(header(unsafe { page.as_page() }), size) {
  • replacement in sanakirja-core/src/btree/page/put.rs at line 58
    [3.7370][3.7370:7430]()
    let s = L::offset_slice::<T, K, V>(page.as_page());
    [3.7370]
    [3.7430]
    let s = L::offset_slice::<T, K, V>(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page/put.rs at line 62
    [3.7500][3.7940:8004]()
    clone::<K, V, L>(page.as_page(), &mut new, s0, &mut n);
    [3.7500]
    [3.9784]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut new, s0, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 71
    [3.9871][3.9871:9939](),[3.9939][3.8193:8257](),[3.7828][3.8193:8257]()
    debug!("alloc: {:?}", header(new.0.as_page()).left_page());
    clone::<K, V, L>(page.as_page(), &mut new, s1, &mut n);
    [3.9871]
    [3.9940]
    debug!(
    "alloc: {:?}",
    header(unsafe { new.0.as_page() }).left_page()
    );
    clone::<K, V, L>(unsafe { page.as_page() }, &mut new, s1, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 109
    [3.8738][3.8738:8776]()
    let hdr = header(page.as_page());
    [3.8738]
    [3.8776]
    let hdr = header(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page/put.rs at line 116
    [3.8894][3.8894:8950]()
    let s = L::offset_slice::<T, K, V>(page.as_page());
    [3.8894]
    [3.8950]
    let s = L::offset_slice::<T, K, V>(unsafe { page.as_page() });
  • replacement in sanakirja-core/src/btree/page/put.rs at line 123
    [3.9266][3.8408:8484]()
    let (k, v, r) = L::kv(txn, page.as_page(), s1a.first::<T, K, V>());
    [3.9266]
    [3.9449]
    let (k, v, r) = L::kv(txn, unsafe { page.as_page() }, s1a.first::<T, K, V>());
  • replacement in sanakirja-core/src/btree/page/put.rs at line 139
    [3.10119][3.8485:8554]()
    clone::<K, V, L>(page.as_page(), &mut left, s0, &mut n);
    [3.10119]
    [3.10191]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut left, s0, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 151
    [3.10668][3.8618:8689]()
    clone::<K, V, L>(page.as_page(), &mut right, s1a, &mut n);
    [3.10668]
    [3.8689]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut right, s1a, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 153
    [3.8753][3.8753:8824]()
    clone::<K, V, L>(page.as_page(), &mut right, s1b, &mut n);
    [3.8753]
    [3.10883]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut right, s1b, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 160
    [3.11212][3.8825:8895]()
    clone::<K, V, L>(page.as_page(), &mut right, s1, &mut n);
    [3.11212]
    [3.11285]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut right, s1, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 173
    [3.11605][3.11605:11667]()
    let ll = header(page.as_page()).left_page() & !0xfff;
    [3.11605]
    [3.11667]
    let ll = header(unsafe { page.as_page() }).left_page() & !0xfff;
  • replacement in sanakirja-core/src/btree/page/put.rs at line 176
    [3.11764][3.8958:9024]()
    clone::<K, V, L>(page.as_page(), &mut left, s0a, &mut n);
    [3.11764]
    [3.9024]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut left, s0a, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 178
    [3.9083][3.9083:9149]()
    clone::<K, V, L>(page.as_page(), &mut left, s0b, &mut n);
    [3.9083]
    [3.11964]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut left, s0b, &mut n);
  • replacement in sanakirja-core/src/btree/page/put.rs at line 196
    [3.12573][3.9458:9528]()
    clone::<K, V, L>(page.as_page(), &mut right, s1, &mut n);
    [3.12573]
    [3.12646]
    clone::<K, V, L>(unsafe { page.as_page() }, &mut right, s1, &mut n);
  • replacement in sanakirja-core/src/btree/mod.rs at line 392
    [2.6429][3.891:980](),[3.9428][3.891:980](),[3.891][3.891:980]()
    if let Ok((kk, vv, _)) = P::set_cursor(txn, page.as_page(), &mut cursor, k, v) {
    [2.6429]
    [3.980]
    if let Ok((kk, vv, _)) = P::set_cursor(txn, unsafe { page.as_page() }, &mut cursor, k, v) {
  • replacement in sanakirja-core/src/btree/mod.rs at line 397
    [3.1107][3.15763:15846]()
    } else if let Some((k, v, _)) = P::current(txn, page.as_page(), &cursor) {
    [3.1107]
    [3.4387]
    } else if let Some((k, v, _)) = P::current(txn, unsafe { page.as_page() }, &cursor) {
  • replacement in sanakirja-core/src/btree/mod.rs at line 407
    [3.4800][3.1335:1399](),[3.1335][3.1335:1399]()
    let next_page = P::left_child(page.as_page(), &cursor);
    [3.4800]
    [3.1399]
    let next_page = P::left_child(unsafe { page.as_page() }, &cursor);
  • replacement in sanakirja-core/src/btree/mod.rs at line 476
    [3.5321][3.2231:2319](),[3.2231][3.2231:2319]()
    if let Some((k, v, _)) = P::current(txn, cur.page.as_page(), &cur.cursor) {
    [3.5321]
    [3.2319]
    if let Some((k, v, _)) = P::current(txn, unsafe { cur.page.as_page() }, &cur.cursor) {
  • replacement in sanakirja-core/src/btree/mod.rs at line 485
    [3.2490][3.2490:2562]()
    let r = P::left_child(cur.page.as_page(), &cur.cursor);
    [3.2490]
    [3.2562]
    let r = P::left_child(unsafe { cur.page.as_page() }, &cur.cursor);
  • replacement in sanakirja-core/src/btree/del.rs at line 56
    [3.16509][3.9669:9739]()
    P::current(txn, cur.page.as_page(), &cur.cursor).unwrap()
    [3.16509]
    [3.1183]
    P::current(txn, unsafe { cur.page.as_page() }, &cur.cursor).unwrap()
  • replacement in sanakirja-core/src/btree/del.rs at line 66
    [2.7994][2.7994:8067]()
    let mut left_page = P::right_child(cur.page.as_page(), &cur.cursor);
    [2.7994]
    [2.8067]
    let mut left_page = P::right_child(unsafe { cur.page.as_page() }, &cur.cursor);
  • replacement in sanakirja-core/src/btree/del.rs at line 70
    [2.8182][2.8182:8240]()
    left_page = P::left_child(page.as_page(), &curs);
    [2.8182]
    [2.8240]
    left_page = P::left_child(unsafe { page.as_page() }, &curs);
  • replacement in sanakirja-core/src/btree/del.rs at line 165
    [2.9352][3.10027:10104](),[3.1912][3.10027:10104](),[3.10027][3.10027:10104]()
    let (k, v, _) = P::current(txn, curs0.page.as_page(), &c1).unwrap();
    [2.9352]
    [3.1806]
    let (k, v, _) = P::current(txn, unsafe { curs0.page.as_page() }, &c1).unwrap();
  • replacement in sanakirja-core/src/btree/del.rs at line 218
    [3.2697][3.2697:2783]()
    let other = txn.load_page(P::left_child(curs.page.as_page(), &curs.cursor))?;
    [3.2697]
    [3.2783]
    let other = txn.load_page(P::left_child(unsafe { curs.page.as_page() }, &curs.cursor))?;
  • replacement in sanakirja-core/src/btree/del.rs at line 243
    [3.3889][3.3889:4089](),[3.4089][3.6014:6035](),[3.6014][3.6014:6035](),[3.6035][3.4090:4338](),[3.4338][3.6078:6093](),[3.6078][3.6078:6093]()
    let ((k, v, r), mod_is_left) =
    if let Some(x) = P::current(txn, curs.page.as_page(), &curs.cursor) {
    // Not the last element of the page.
    (x, true)
    } else {
    // Last element of the page.
    let (k, v, _) = P::prev(txn, curs.page.as_page(), &mut curs.cursor).unwrap();
    let l = P::left_child(curs.page.as_page(), &curs.cursor);
    ((k, v, l), false)
    };
    [3.3889]
    [3.62649]
    let ((k, v, r), mod_is_left) = if let Some(x) =
    P::current(txn, unsafe { curs.page.as_page() }, &curs.cursor)
    {
    // Not the last element of the page.
    (x, true)
    } else {
    // Last element of the page.
    let (k, v, _) = P::prev(txn, unsafe { curs.page.as_page() }, &mut curs.cursor).unwrap();
    let l = P::left_child(unsafe { curs.page.as_page() }, &curs.cursor);
    ((k, v, l), false)
    };
  • replacement in sanakirja-core/src/btree/del.rs at line 445
    [3.63098][3.33519:33576](),[3.33576][2.9896:9970]()
    let mut left = P::left_child(m.page.as_page(), &c0);
    while let Some((k, v, r)) = P::next(txn, m.page.as_page(), &mut c0) {
    [3.63098]
    [2.9970]
    let mut left = P::left_child(unsafe { m.page.as_page() }, &c0);
    while let Some((k, v, r)) = P::next(txn, unsafe { m.page.as_page() }, &mut c0) {
  • replacement in sanakirja-core/src/btree/del.rs at line 471
    [2.10639][2.10639:10710]()
    if let Some((k, v, r)) = P::next(txn, m.page.as_page(), &mut c1) {
    [2.10639]
    [2.10710]
    if let Some((k, v, r)) = P::next(txn, unsafe { m.page.as_page() }, &mut c1) {
  • replacement in sanakirja-core/src/btree/del.rs at line 480
    [2.10942][2.10942:11016]()
    while let Some((k, v, r)) = P::next(txn, m.page.as_page(), &mut c1) {
    [2.10942]
    [2.11016]
    while let Some((k, v, r)) = P::next(txn, unsafe { m.page.as_page() }, &mut c1) {
  • replacement in sanakirja-core/src/btree/cursor.rs at line 128
    [3.66731][2.15169:15269]()
    if let Ok((kk, vv, _)) = P::set_cursor(txn, current.page.as_page(), cursor, k, v) {
    [3.66731]
    [3.66814]
    if let Ok((kk, vv, _)) =
    P::set_cursor(txn, unsafe { current.page.as_page() }, cursor, k, v)
    {
  • replacement in sanakirja-core/src/btree/cursor.rs at line 142
    [3.67059][2.15397:15472]()
    let next_page = P::left_child(current.page.as_page(), cursor);
    [3.67059]
    [3.67163]
    let next_page = P::left_child(unsafe { current.page.as_page() }, cursor);
  • replacement in sanakirja-core/src/btree/cursor.rs at line 176
    [3.11589][3.11589:11688]()
    let (k, v, r) = P::current(txn, current.page.as_page(), &mut current.cursor).unwrap();
    [3.11589]
    [3.68404]
    let (k, v, r) =
    P::current(txn, unsafe { current.page.as_page() }, &mut current.cursor).unwrap();
  • replacement in sanakirja-core/src/btree/cursor.rs at line 210
    [2.15681][3.0:84](),[3.12129][3.0:84]()
    let left = P::right_child(current.page.as_page(), &current.cursor);
    [2.15681]
    [3.13357]
    let left = P::right_child(unsafe { current.page.as_page() }, &current.cursor);
  • replacement in sanakirja-core/src/btree/cursor.rs at line 220
    [3.12618][3.8071:8172]()
    } else if let Some((k, v, r)) = P::current(txn, current.page.as_page(), &current.cursor)
    [3.12618]
    [3.8172]
    } else if let Some((k, v, r)) =
    P::current(txn, unsafe { current.page.as_page() }, &current.cursor)
  • replacement in sanakirja-core/src/btree/cursor.rs at line 250
    [3.614][3.2523:2606]()
    let left = P::left_child(current.page.as_page(), &current.cursor);
    [3.614]
    [3.2606]
    let left = P::left_child(unsafe { current.page.as_page() }, &current.cursor);
  • replacement in sanakirja-core/src/btree/cursor.rs at line 260
    [3.13856][3.8422:8523]()
    } else if let Some((k, v, _)) = P::current(txn, current.page.as_page(), &current.cursor)
    [3.13856]
    [3.8523]
    } else if let Some((k, v, _)) =
    P::current(txn, unsafe { current.page.as_page() }, &current.cursor)
  • replacement in sanakirja-core/src/btree/cursor.rs at line 264
    [3.668][3.2796:2876]()
    let l = P::left_child(current.page.as_page(), &current.cursor);
    [3.668]
    [3.14115]
    let l = P::left_child(unsafe { current.page.as_page() }, &current.cursor);