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
andrew
8e0e65dac6
Count implicit key byte for maybeDecreaseCapacity
2024-03-18 11:42:53 -07:00
andrew
2e246ec6a4
Cachegrind says this is fewer instructions
2024-03-16 08:46:41 -07:00
andrew
6d7e3c9849
Fix invalid offsetof warnings
2024-03-15 21:37:21 -07:00
andrew
303b368fc5
Add Type template parameter to maybeDownsize to avoid branch
2024-03-15 18:05:32 -07:00
andrew
9f5a68e2c0
Use plain loop for Node3
2024-03-15 17:35:14 -07:00
andrew
dfbb3ce5f1
Use assume
...
It works now that we fell back to the __builtin_unreachable based
implementation for gcc.
2024-03-15 17:23:02 -07:00
andrew
83fedf1f9e
Remove dead code
2024-03-15 17:00:20 -07:00
andrew
8556caf360
Cachegrind says memset uses fewer instructions here
2024-03-15 16:57:16 -07:00
andrew
9d13ca84f5
Fix bug spotted by hand. No test coverage there yet
2024-03-15 16:55:34 -07:00
andrew
a79436ee9b
Use statically-known numChildren in Node3 -> Node16
2024-03-15 16:52:40 -07:00
andrew
e9c8537cf2
Copy Node members and set children pointers in copyChildrenAndKeyFrom
2024-03-15 16:28:58 -07:00
andrew
5b988efe6f
Consolidate copyChildrenAndKeyFrom implementations
2024-03-15 16:12:44 -07:00
andrew
e35d698b21
Improve copyChildrenAndKeyFrom-related codegen
2024-03-15 08:19:16 -07:00
andrew
eb93157ddf
Improve codegen in freeAndMakeCapacityAtLeast
2024-03-14 19:23:49 -07:00
andrew
429fe5baed
Fix some uses of uninitialized memory
...
Introduced in ee36bda8f8 , unsurprisingly.
2024-03-14 15:39:37 -07:00
andrew
a0451e4423
Give radix tree setOldestVersion an extra 10 work per call
...
It seemed to really be important for the skip list. I'm cargo culting
this a little bit here.
2024-03-14 15:32:39 -07:00
andrew
b817e3c749
Track malloc size with a header for SHOW_MEMORY
2024-03-14 15:30:46 -07:00
andrew
ee36bda8f8
Track initializedness of Node memory more precisely
...
By not initializing Node members with dummy default values.
This has performance/code size benefits, and improves debugging when
running under valgrind.
Unfortunately this also makes it easy to write code that uses
uninitialized memory, so if valgrind doesn't have good coverage then we
might let some uninit usages sneak through.
We plan to have good coverage for valgrind, so I think it's ok. If
writing correct code becomes too tedious then we can go back to
initializing Node fields with dummy default values.
2024-03-14 14:58:20 -07:00