403d70a1d3
Prefer not copying node in eraseBetween
...
If numChildren + entryPresent is enough, we don't have to copy even if
it would fit in a smaller node.
If we have to copy, we might as well use the smallest acceptable node
type.
2024-08-15 11:33:16 -07:00
9763452713
Separate beginIsPrefix path and simplify slightly
2024-08-15 11:29:15 -07:00
73d0593fca
Remove separate prefix write codepath for now
2024-08-14 21:29:43 -07:00
23c2a3e1c6
SIMD for eraseBetween (Node16)
Tests / Clang total: 2688, passed: 2688
Clang |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Debug total: 2686, passed: 2686
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-08-14 18:12:46 -07:00
a64e792964
Remove unused function
2024-08-14 17:40:04 -07:00
cc526cb6ba
Call eraseBetween on useAsRoot in addWriteRange
2024-08-14 17:08:55 -07:00
7e49888bec
More eraseBetween optimizations
2024-08-14 16:40:29 -07:00
e64ebabced
eraseBetween optimizations
2024-08-14 16:13:37 -07:00
1e34951a77
Fix use-of-uninit in eraseBetween (Node256)
2024-08-14 15:25:10 -07:00
baf64520d6
Have eraseBetween take in-tree node by reference
2024-08-14 15:04:11 -07:00
3499626127
Fix potential strict aliasing issues
2024-08-14 15:01:34 -07:00
b7f9084694
destroyTree -> eraseTree. Use freelist
2024-08-14 14:47:22 -07:00
4b82502946
Accept node by ref for eraseBetween again
2024-08-14 14:43:19 -07:00
68bbacb69a
Use getInTree in eraseBetween
2024-08-14 14:43:19 -07:00
3078845673
Fix nodes_released accounting
2024-08-14 14:43:19 -07:00
43f6126cc4
Add a missing assert, call to removeNode
2024-08-14 14:43:19 -07:00
b911d87d55
eraseBetween bug fixes
2024-08-14 14:43:19 -07:00
0c65a82b78
Separate codepath for prefix writes
...
Uses the newly-added eraseBetween
2024-08-14 14:43:19 -07:00
e024cb8291
Track entriesErased in destroyTree
2024-08-14 14:43:19 -07:00
0740dcad43
Strengthen checkMemoryBoundInvariants check for Node0
...
I think this is probably checked elsewhere, but let's check here too for
consistency
2024-08-14 14:28:28 -07:00
176df61321
Simplify handling of beginNode invalidation if begin is prefix of end
2024-08-14 14:26:13 -07:00
45995e3307
Update comments
2024-08-12 17:05:21 -07:00
359b0b29ff
Avoid function call if no partial key
2024-08-12 16:33:03 -07:00
54e47ebd40
Simplify insert loop
2024-08-12 16:25:12 -07:00
1c9dda68a6
Call consumePartialKey from getOrCreateChild
2024-08-12 16:24:05 -07:00
142455dd28
Move consumePartialKey, and allow empty partial key
2024-08-12 16:18:58 -07:00
567d385fbd
WIP create child in getOrCreateChild
2024-08-12 16:11:16 -07:00
8a44055533
Consume first byte in insert iteration
2024-08-12 15:39:09 -07:00
3d592bd6a9
Move longestCommonPrefix to its own file
Tests / Clang total: 2096, failed: 520, passed: 1576
Tests / Debug total: 2094, failed: 520, passed: 1574
Tests / SIMD fallback total: 2096, passed: 2096
Tests / Release [gcc] total: 2096, passed: 2096
Tests / Release [gcc,aarch64] total: 1564, passed: 1564
Tests / Coverage total: 1574, passed: 1574
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-08-12 15:10:05 -07:00
f5f5fb620b
Run gc at 200%
...
150% pessimized the "real data" benchmark
2024-08-12 10:48:24 -07:00
182c065c8e
Insert common prefix in addWriteRange
...
Tests / Clang total: 1420, passed: 1420
Clang |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Debug total: 1418, passed: 1418
Tests / SIMD fallback total: 1420, passed: 1420
Tests / Release [gcc] total: 1420, passed: 1420
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 1057, passed: 1057
Tests / Coverage total: 1067, passed: 1067
Code Coverage #### Project Overview
No changes detected, that affect the code coverage.
* Line Coverage: 99.12% (1799/1815)
* Branch Coverage: 67.50% (1485/2200)
* Complexity Density: 0.00
* Lines of Code: 1815
#### Quality Gates Summary
Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
This allows us to use our optimized implementation for setting max
version along the search path instead of a one-off loop
2024-08-09 14:57:04 -07:00
2dba0d5be3
Have insert return a pointer to the in-tree pointer
2024-08-09 13:58:31 -07:00
a1dfdf355c
Use metrics to count change in entry count
...
This lets us run gc slower safely
2024-08-09 13:44:49 -07:00
ac98d4a443
Remove always_inline attribute - it wasn't affecting codegen
Tests / Clang total: 1420, passed: 1420
Clang |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Debug total: 1418, passed: 1418
Tests / SIMD fallback total: 1420, passed: 1420
Tests / Release [gcc] total: 1420, passed: 1420
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 1057, passed: 1057
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-08-08 10:44:54 -07:00
7d86beb14c
Revert 29c05187fb
...
We're already doing this in checkRangeStartsWith
2024-08-07 16:51:23 -07:00
2fa954ed36
Fix compiler warning
2024-08-07 16:25:49 -07:00
ded6e7fc2c
Require entry present for fixupMaxVersion
2024-08-06 17:59:38 -07:00
781ba15cae
Enforce that root does not have a partial key
2024-08-06 17:55:33 -07:00
29c05187fb
Early return if common prefix isn't a prefix of an entry
...
Tests / Clang total: 1479, passed: 1479
Clang |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Debug total: 1477, passed: 1477
Tests / SIMD fallback total: 1479, passed: 1479
Tests / Release [gcc] total: 1479, passed: 1479
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 1102, passed: 1102
Tests / Coverage total: 1111, passed: 1111
Code Coverage #### Project Overview
No changes detected, that affect the code coverage.
* Line Coverage: 98.00% (1812/1849)
* Branch Coverage: 64.20% (1521/2369)
* Complexity Density: 0.00
* Lines of Code: 1849
#### Quality Gates Summary
Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
For range reads
2024-08-06 15:32:44 -07:00
d89028dd2f
Inline SearchStepWise into checkRangeRead
...
This improves clang codegen
2024-08-06 14:45:52 -07:00
09cf807747
Avoid some branches on node type while inserting
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-08-06 13:51:49 -07:00
051eb5919d
Extract consumePartialKey to its own function
2024-08-06 13:20:44 -07:00
ed5589e4ed
Specialize partial key split for newly created Node3
2024-08-06 13:04:19 -07:00
a7b3d8fe4c
Clarify insert
documentation
2024-08-06 11:29:33 -07:00
c3a047fdf8
Handle newly-created node partial key immediately
2024-08-06 09:22:21 -07:00
b4b469a175
Use maxOfMax in fixupMaxVersion
Tests / Clang total: 1479, passed: 1479
Clang |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Debug total: 1477, passed: 1477
Tests / SIMD fallback total: 1479, passed: 1479
Tests / Release [gcc] total: 1479, passed: 1479
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 1102, passed: 1102
Tests / Coverage total: 1111, passed: 1111
Code Coverage #### Project Overview
No changes detected, that affect the code coverage.
* Line Coverage: 98.83% (1776/1797)
* Branch Coverage: 64.91% (1506/2320)
* Complexity Density: 0.00
* Lines of Code: 1797
#### Quality Gates Summary
Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-08-05 21:41:49 -07:00
0201e27498
Remove redundant setMaxVersion calls
2024-08-05 19:29:38 -07:00
2010920a2c
Correct comment
2024-08-05 19:28:24 -07:00
19af8da65c
Fix endNode's max version after the fact
...
This sets us up to unconditionally update the max version along the
search path for inserts, and avoid dispatching on type twice per
iteration.
2024-08-05 17:50:26 -07:00
80785e3c3b
Avoid switch on parent type for max version during search
2024-08-05 16:40:58 -07:00