391 Commits
Author SHA1 Message Date
andrew bff7b85de2 Remove "Child" struct 2024-06-27 10:03:14 -07:00
andrew 9108ee209a SoA instead of AoS for child, maxVersion 2024-06-27 09:57:54 -07:00
andrew f8bf1c6eb4 Remove unreachable code 2024-06-26 22:14:27 -07:00
andrew 4da2a01614 Use single &, to show branch-free intent 2024-06-26 22:14:05 -07:00
andrew bb0e654040 Fix missed update for Node48::maxOfMax 2024-06-26 22:11:33 -07:00
andrew 02866a8cae Save some bounds checking for scanning Node256 2024-06-26 20:55:18 -07:00
andrew fa86d3e707 "max of max" for Node48 again, but physical instead of logical 2024-06-26 20:41:27 -07:00
andrew 7d1d1d7b2a Maintain childMaxVersion == 0 for unused children in Node48 2024-06-26 20:16:50 -07:00
andrew 789ecc29b3 Use unsigned compare trick to check in bounds 2024-06-26 19:41:25 -07:00
andrew 08f2998a85 Use 8 byte pages for "max of max"
This seems to benchmark better
2024-06-26 19:18:38 -07:00
andrew c882d7663d Maintain "reverseIndex" in Node48 2024-06-26 19:11:34 -07:00
andrew bfea4384ba Branchless inner page check for Node256 2024-06-26 18:28:41 -07:00
andrew 6520e3d734 "max of max" for Node48 2024-06-26 17:54:03 -07:00
andrew 22e4ab01a1 Track "max of max" versions in Node256 2024-06-26 16:28:24 -07:00
andrew b3aeed0caa Warning: interface change! Require versions >= 0 2024-06-26 15:46:36 -07:00
andrew 5f3833e965 Change maxVersion to return by value, and add setMaxVersion 2024-06-26 15:33:15 -07:00
andrew 8b1cd9c052 Minor improvements to checkMaxBetweenExclusive 2024-06-26 15:06:50 -07:00
andrew 488c723726 Improve worst-case radix tree checkRangeRead 2024-06-25 21:22:55 -07:00
andrew 2eb461b8ea Fix build for llvm 18 2024-06-11 11:38:55 -07:00
andrew 6e63fd5126 Add internal entry points, with test coverage
Closes #25
2024-04-19 11:23:25 -07:00
andrew d2e1863593 Account for every uncovered line in the implementation
Closes #23
2024-04-18 12:43:48 -07:00
andrew c15d296432 Exercise copyChildrenAndKeyFrom for Node{48,256} to itself 2024-04-17 17:13:22 -07:00
andrew 309d315956 Add DebugConflictSet, which asserts using skip list as a reference
CC #23
2024-04-17 12:08:39 -07:00
andrew 85db1a8786 Allow to choose implementation in python wrapper
And fix a few minor bugs to make the python tests pass for skip_list.

CC #23
2024-04-17 12:08:28 -07:00
andrew fd93300ce8 Tweaks and add more planned sections 2024-04-16 17:36:29 -07:00
andrew ad91fb36a5 Symbol tests for macos + whitelist imports/exports
commit 1ad8276100
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:44:35 2024 -0700

    Add symbols for arm build

commit 058e4d5302
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:42:48 2024 -0700

    Add _GLOBAL_OFFSET_TABLE_

commit a201f3ada8
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:34:05 2024 -0700

    Add memset to symbol imports

commit c1129ed0e2
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:32:28 2024 -0700

    Add symbol imports file

commit 618766ce2e
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:27:07 2024 -0700

    Fix objcopy filepath

commit e774a90007
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:24:44 2024 -0700

    Use shellcheck precommit without docker

commit baddea7f57
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:20:26 2024 -0700

    Update and freeze pre-commit hooks

commit 2d3e7b9004
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:19:55 2024 -0700

    Add shellcheck to pre-commit

    Closes #22

commit c4862fee9b
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:15:08 2024 -0700

    Add symbol tests for apple

    closes #21
2024-04-03 12:50:51 -07:00
andrew ab211c646a Apply compiler-appeasing syntax changes from Taoxi 2024-03-28 14:57:31 -07:00
andrew 0a1843a161 Add USE_SIMD_FALLBACK 2024-03-28 11:12:50 -07:00
andrew 4edf0315d9 Find insertion point for Node16 with simd
Closes #13
2024-03-28 10:47:20 -07:00
andrew 5cf43d1bfa Add weaselab namespace 2024-03-27 16:07:05 -07:00
andrew c15c2e7b44 Remove redundant static assert
Closes #14
2024-03-27 12:41:45 -07:00
andrew b7cdecaf71 Document thread-safety in terms of constness 2024-03-20 16:16:15 -07:00
andrew cda28643a6 Fix ConflictSet_getBytes 2024-03-20 16:15:43 -07:00
andrew 6222b74787 Fix tests
Add the new symbol, and update the valgrind client request so that
Node::partialKeyCapacity is defined.
2024-03-20 12:21:59 -07:00
andrew 19edc6f78f Interface change! Add ConflictSet::getBytes
Closes #12
2024-03-20 12:11:34 -07:00
andrew becfd25139 De-templatize kUseFreeList
This results in smaller code. This is part of the "let the compiler be
in charge of inlining decisions" theme.
2024-03-19 15:12:31 -07:00
andrew d78b36821b Remove more redundant nullptr checks 2024-03-19 15:05:34 -07:00
andrew ce79b47fbe Revert 303b368fc5
This is a code-size / speed tradeoff. Maybe it's a good idea here, but
it's a bit weird to do this in some places and not others (there are
many places we can avoid switching on type this way). The compiler can
inline and then dead code eliminate to achieve the same effect, so we'll
just let the compiler be in charge of inlining decisions.
2024-03-19 15:01:13 -07:00
andrew 727b7e642a Save more redundant nullptr checks 2024-03-19 14:34:59 -07:00
andrew cb4c2b7e1e Avoid redundant null check in some cases 2024-03-19 14:29:13 -07:00
andrew 83c7f66d67 Remove some redundant nullptr checks 2024-03-18 16:22:24 -07:00
andrew a5710b8282 Remove performance-only code from debug build for increased coverage 2024-03-18 16:21:55 -07:00
andrew c31eebd5de No caller of CheckRangeRightSide::downLeftSpine has null n 2024-03-18 16:03:41 -07:00
andrew ddeb059968 Remove more dead code 2024-03-18 16:01:56 -07:00
andrew 5a0bcf9a5a Strengthen precondition to checkRangeStartsWith
and remove resulting dead code
2024-03-18 15:44:44 -07:00
andrew 97717cec86 Remove suspected dead code
Removing it is definitely safe. I suspect that any way to get here would
have already returned from checkRangeRead during the search for the
common prefix
2024-03-18 15:30:15 -07:00
andrew 6a13c43a78 Remove mistakenly checked in printfs 2024-03-18 14:03:09 -07:00
andrew c6c438bae2 Address more missing coverage
cc #3. Found some non-trivial dead code this time!
2024-03-18 14:01:30 -07:00
andrew 7d4f832b43 Address some missing coverage
cc #3
2024-03-18 13:36:35 -07:00
andrew 5b0c3c2428 Exclude more from coverage
Only count ConflictSet.cpp in jenkins now, and also add some more
excludes for unreachable lines
2024-03-18 12:05:52 -07:00