81 Commits

Author SHA1 Message Date
7fb408b466 Remove tailcall test
All checks were successful
Tests / 64 bit versions total: 5514, passed: 5514
Tests / Debug total: 5512, passed: 5512
Tests / SIMD fallback total: 5514, passed: 5514
Tests / Release [clang] total: 5514, passed: 5514
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc] total: 5514, passed: 5514
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [clang,aarch64] total: 3650, passed: 3650
Tests / Coverage total: 3689, passed: 3689
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 97.27% (2604/2677) * Branch Coverage: 48.98% (9897/20207) * Complexity Density: 0.00 * Lines of Code: 2677 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
We no longer rely on tail call optimization happening where musttail is
not supported
2024-10-15 17:47:36 -07:00
6d265acfc7 Install llvm-cov 2024-10-15 17:47:01 -07:00
67a61513b8 Use clang for coverage build
Some checks failed
Tests / 64 bit versions total: 5516, passed: 5516
Tests / Debug total: 5514, passed: 5514
Tests / SIMD fallback total: 5516, passed: 5516
Tests / Release [clang] total: 5516, passed: 5516
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc] total: 5516, passed: 5516
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [clang,aarch64] total: 3650, passed: 3650
Tests / Coverage total: 3691, passed: 3691
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-15 17:34:30 -07:00
583f2e7612 Check interleaved and sequential in debug mode 2024-10-15 17:31:06 -07:00
66e5b033c0 Fix control flow reaches end of non-void function warning 2024-10-15 17:27:36 -07:00
1d705cd4b7 Add to corpus 2024-10-15 17:12:45 -07:00
769cf8de9a Bring back sequential read implementation
This will be used if there's only one check to perform or if the
compiler does not support musttail and preserve_none
2024-10-15 17:12:11 -07:00
84942a5bf8 Try clang 20
All checks were successful
Tests / 64 bit versions total: 5052, passed: 5052
Tests / Debug total: 5050, passed: 5050
Tests / SIMD fallback total: 5052, passed: 5052
Tests / Release [clang] total: 5052, passed: 5052
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc] total: 5052, passed: 5052
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [clang,aarch64] total: 3342, passed: 3342
Tests / Coverage total: 3381, passed: 3381
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 94.64% (2066/2183) * Branch Coverage: 60.82% (1678/2759) * Complexity Density: 0.00 * Lines of Code: 2183 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-15 15:59:58 -07:00
7ad6872ee8 Use clang-19 in jenkins
Some checks failed
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-15 15:55:33 -07:00
9db5eb960d Suppress some unhelpful warnings 2024-10-15 15:06:10 -07:00
5df25a138a Don't initialize max version if child doesn't exist 2024-10-15 12:55:28 -07:00
381fbce0c0 Remove duplicate clang build
All checks were successful
Tests / 64 bit versions total: 5052, passed: 5052
Tests / Debug total: 5050, passed: 5050
Tests / SIMD fallback total: 5052, passed: 5052
Tests / Release [clang] total: 5052, passed: 5052
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc] total: 5052, passed: 5052
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [clang,aarch64] total: 3342, passed: 3342
Tests / Coverage total: 3381, passed: 3381
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 94.30% (2053/2177) * Branch Coverage: 59.94% (1695/2828) * Complexity Density: 0.00 * Lines of Code: 2177 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-14 22:32:01 -07:00
87aeb349a3 Use clang for building packages
Some checks failed
Tests / Clang total: 5052, passed: 5052
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 5052, passed: 5052
Tests / Debug total: 5050, passed: 5050
Tests / SIMD fallback total: 5052, passed: 5052
Tests / Release [clang] total: 5052, passed: 5052
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-14 22:23:56 -07:00
28fb0d7faa Cross-compile to aarch64 with clang 2024-10-14 22:19:50 -07:00
5013c689a0 Remove dead code
All checks were successful
Tests / Clang total: 5052, passed: 5052
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 5052, passed: 5052
Tests / Debug total: 5050, passed: 5050
Tests / SIMD fallback total: 5052, passed: 5052
Tests / Release [gcc] total: 5052, passed: 5052
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3342, passed: 3342
Tests / Coverage total: 3381, passed: 3381
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 94.30% (2053/2177) * Branch Coverage: 59.94% (1695/2828) * Complexity Density: 0.00 * Lines of Code: 2177 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-14 22:06:48 -07:00
316bbf679f Add to corpus
Some checks failed
Tests / Clang total: 5052, passed: 5052
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 5052, passed: 5052
Tests / Debug total: 5050, passed: 5050
Tests / SIMD fallback total: 5052, passed: 5052
Tests / Release [gcc] total: 5052, passed: 5052
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3342, passed: 3342
Tests / Coverage total: 3381, passed: 3381
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 93.40% (2053/2198) * Branch Coverage: 59.79% (1695/2835) * Complexity Density: 0.00 * Lines of Code: 2198 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-14 21:15:45 -07:00
58aabe83f5 Improve codegen for tracking check metrics 2024-10-14 17:50:38 -07:00
0c8a051913 Avoid more branches on type 2024-10-14 17:16:56 -07:00
11e8717da8 Specific node overloads for checkMaxBetweenExclusive 2024-10-14 16:54:44 -07:00
824037bf32 Remove dead code
All checks were successful
Tests / Clang total: 4601, passed: 4601
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4601, passed: 4601
Tests / Debug total: 4599, passed: 4599
Tests / SIMD fallback total: 4601, passed: 4601
Tests / Release [gcc] total: 4601, passed: 4601
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3042, passed: 3042
Tests / Coverage total: 3080, passed: 3080
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 94.22% (2020/2144) * Branch Coverage: 60.03% (1673/2787) * Complexity Density: 0.00 * Lines of Code: 2144 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-13 21:28:27 -07:00
bbe964110e Disable skip list tests by default
Some checks failed
Tests / Clang total: 4601, passed: 4601
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4601, passed: 4601
Tests / Debug total: 4599, passed: 4599
Tests / SIMD fallback total: 4601, passed: 4601
Tests / Release [gcc] total: 4601, passed: 4601
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3042, passed: 3042
Tests / Coverage total: 3080, passed: 3080
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 94.13% (2021/2147) * Branch Coverage: 59.86% (1681/2808) * Complexity Density: 0.00 * Lines of Code: 2147 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-13 20:42:14 -07:00
100449c76c Add to corpus 2024-10-13 20:39:39 -07:00
51b5f638a4 Combine terminal down_left_spine paths 2024-10-13 20:39:07 -07:00
767dacc742 Fully interleaved range read
Would be great to find a way to make this all more readable
2024-10-13 20:05:06 -07:00
978a7585b6 Remove backtrack label from checkRangeRightSide 2024-10-13 11:27:36 -07:00
71b3c7fb7f Stop tracking first iteration
We can tell with other means
2024-10-12 23:56:01 -07:00
420f50c40f Stop tracking searchPathLen 2024-10-12 23:34:46 -07:00
69a131df38 Prepare for interleaving checkRangeRightSide 2024-10-12 23:01:47 -07:00
8a4032e850 Remove dead code
All checks were successful
Tests / Clang total: 5707, passed: 5707
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 5707, passed: 5707
Tests / Debug total: 5705, passed: 5705
Tests / SIMD fallback total: 5707, passed: 5707
Tests / Release [gcc] total: 5707, passed: 5707
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 4252, passed: 4252
Tests / Coverage total: 4289, passed: 4289
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 94.02% (1980/2106) * Branch Coverage: 60.55% (1604/2649) * Complexity Density: 0.00 * Lines of Code: 2106 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-12 18:00:19 -07:00
9c365435ea Add to corpus
Some checks failed
Tests / Clang total: 5707, passed: 5707
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 5707, passed: 5707
Tests / Debug total: 5705, passed: 5705
Tests / SIMD fallback total: 5707, passed: 5707
Tests / Release [gcc] total: 5707, passed: 5707
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 4252, passed: 4252
Tests / Coverage total: 4289, passed: 4289
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 93.93% (1980/2108) * Branch Coverage: 60.51% (1604/2651) * Complexity Density: 0.00 * Lines of Code: 2108 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-12 17:39:27 -07:00
8eb5e76336 Add short-circuiting back to range checks 2024-10-12 17:20:22 -07:00
e8982074f2 Add short-circuiting back for range common prefix search 2024-10-12 17:10:19 -07:00
f60833a57f Add short-circuiting back in for point and prefix checks 2024-10-12 17:05:47 -07:00
47fd811efc Fix new clang warning 2024-10-12 16:42:52 -07:00
73f93edf49 Remove dead code
Some checks failed
Tests / Clang total: 5241, passed: 5241
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 5241, passed: 5241
Tests / Debug total: 5239, passed: 5239
Tests / SIMD fallback total: 5241, passed: 5241
Tests / Release [gcc] total: 5241, passed: 5241
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3904, passed: 3904
Tests / Coverage total: 3939, passed: 3939
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 97.65% (2036/2085) * Branch Coverage: 62.03% (1689/2723) * Complexity Density: 0.00 * Lines of Code: 2085 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-12 12:56:13 -07:00
8bac1f66fc Remove searchPathLen 2024-10-12 11:12:12 -07:00
352c07cbc9 Use CheckJob::setResult 2024-10-12 00:01:35 -07:00
2e7e357355 Remove dead code 2024-10-11 23:47:32 -07:00
147f5af16b Add to corpus
Some checks failed
Tests / Clang total: 5241, passed: 5241
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 5241, passed: 5241
Tests / Debug total: 5239, passed: 5239
Tests / SIMD fallback total: 5241, passed: 5241
Tests / Release [gcc] total: 5241, passed: 5241
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3904, passed: 3904
Tests / Coverage total: 3939, passed: 3939
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 96.70% (2049/2119) * Branch Coverage: 60.78% (1711/2815) * Complexity Density: 0.00 * Lines of Code: 2119 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-11 23:35:51 -07:00
323b239411 Stop applying flatten attribute
Some checks failed
Tests / Clang total: 4588, passed: 4588
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4588, passed: 4588
Tests / Debug total: 4586, passed: 4586
Tests / SIMD fallback total: 4588, passed: 4588
Tests / Release [gcc] total: 4588, passed: 4588
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3415, passed: 3415
Tests / Coverage total: 3449, passed: 3449
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 96.70% (2049/2119) * Branch Coverage: 60.78% (1711/2815) * Complexity Density: 0.00 * Lines of Code: 2119 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
This blows up the code size too much. I wonder if having all those
distinct possible program counters helps libfuzzer /shrug
2024-10-11 21:31:18 -07:00
54c7ccb96b Allow for easily increasing number of range reads
For worst case for radix tree benchmark
2024-10-11 21:20:45 -07:00
6a12210866 Make better use of static node type info for check left side 2024-10-11 21:06:57 -07:00
416504158e Interleave checkRangeLeftSide 2024-10-11 20:56:40 -07:00
b0bc68a14e Move checkRangeStartsWith out of finishCheckRangeRead
This is incrementally closer to where we want to be I think
2024-10-11 17:52:04 -07:00
0de85ecda0 Add done_common_prefix_iter 2024-10-11 17:33:31 -07:00
44afb8be00 Interleave the common prefix search in range check 2024-10-11 17:26:34 -07:00
ecdbaaf2c1 Add missing MUSTTAIL 2024-10-11 16:51:00 -07:00
2c253c29b5 Add to corpus
Some checks failed
Tests / Clang total: 4588, passed: 4588
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4588, passed: 4588
Tests / Debug total: 4586, passed: 4586
Tests / SIMD fallback total: 4588, passed: 4588
Tests / Release [gcc] total: 4588, passed: 4588
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3415, passed: 3415
Tests / Coverage total: 3449, passed: 3449
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.06% (2010/2029) * Branch Coverage: 63.56% (1634/2571) * Complexity Density: 0.00 * Lines of Code: 2029 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-11 16:48:13 -07:00
fe9678787d Only require coverage of node-specific overloads of getFirstChildExists 2024-10-11 16:47:19 -07:00
0ac259c782 Interleaved implementation for checking prefix reads
Some checks failed
Tests / Clang total: 4452, passed: 4452
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4452, passed: 4452
Tests / Debug total: 4450, passed: 4450
Tests / SIMD fallback total: 4452, passed: 4452
Tests / Release [gcc] total: 4452, passed: 4452
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3313, passed: 3313
Tests / Coverage total: 3347, passed: 3347
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 98.97% (2017/2038) * Branch Coverage: 63.58% (1639/2578) * Complexity Density: 0.00 * Lines of Code: 2038 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-11 16:04:55 -07:00
8b1a0afc58 First continuation for interleaved check range read 2024-10-11 15:45:25 -07:00
2018fa277c Use a trampoline if musttail not available
All checks were successful
Tests / Clang total: 4452, passed: 4452
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4452, passed: 4452
Tests / Debug total: 4450, passed: 4450
Tests / SIMD fallback total: 4452, passed: 4452
Tests / Release [gcc] total: 4452, passed: 4452
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3313, passed: 3313
Tests / Coverage total: 3347, passed: 3347
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.07% (2021/2040) * Branch Coverage: 64.20% (1655/2578) * Complexity Density: 0.00 * Lines of Code: 2040 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
For the previous approach to work, we would have had to lock in the
generated code for every function that needs to make tail calls in
assembly.
2024-10-10 17:30:16 -07:00
1faeb220d5 Implement keepGoing in asm if musttail is not available
Some checks failed
Tests / Clang total: 4452, passed: 4452
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4452, passed: 4452
Tests / Debug total: 4450, passed: 4450
Tests / SIMD fallback total: 4452, passed: 4452
Tests / Release [gcc] total: 4452, passed: 4452
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3313, passed: 3313
Tests / Coverage total: 3347, failed: 2, passed: 3345
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-10 16:52:27 -07:00
0dc657bfeb Fix arm build
Some checks failed
Tests / Clang total: 4452, passed: 4452
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4452, passed: 4452
Tests / Debug total: 4450, passed: 4450
Tests / SIMD fallback total: 4452, passed: 4452
Tests / Release [gcc] total: 4452, passed: 4452
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 3313, passed: 3313
Tests / Coverage total: 3347, failed: 2, passed: 3345
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-10 16:07:28 -07:00
b51ef97c71 Fix USE_SIMD_FALLBACK build
Some checks failed
Tests / Clang total: 4452, passed: 4452
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4452, passed: 4452
Tests / Debug total: 4450, passed: 4450
Tests / SIMD fallback total: 4452, passed: 4452
Tests / Release [gcc] total: 4452, passed: 4452
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-10 15:56:16 -07:00
31ad3e8e1c Add to corpus
Some checks failed
Tests / Clang total: 4452, passed: 4452
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 4452, passed: 4452
Tests / Debug total: 4450, passed: 4450
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-10 13:21:26 -07:00
e213237698 Remove some dead code 2024-10-10 13:21:13 -07:00
a1c61962a1 Workaround lack of musttail in gcc 2024-10-10 13:20:50 -07:00
a28283748c Interleaved check point read implementation 2024-10-10 11:55:46 -07:00
cafa540fc8 Return tagged pointer from getChild 2024-10-10 10:24:38 -07:00
b9c642d81d Return tagged pointer from getChildAndMaxVersion 2024-10-10 10:21:33 -07:00
7abb129f03 Tagged pointers 2024-10-10 10:17:06 -07:00
3739ccaaf2 Introduce TaggedNodePointer (not actually a tagged pointer yet) 2024-10-10 10:09:52 -07:00
c3190c11ac Use same path as other binaries
All checks were successful
Tests / Clang total: 3339, passed: 3339
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3339, passed: 3339
Tests / Debug total: 3337, passed: 3337
Tests / SIMD fallback total: 3339, passed: 3339
Tests / Release [gcc] total: 3339, passed: 3339
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2482, passed: 2482
Tests / Coverage total: 2511, passed: 2511
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.09% (1846/1863) * Branch Coverage: 67.65% (1447/2139) * Complexity Density: 0.00 * Lines of Code: 1863 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-09 21:04:45 -07:00
52b4bf5a0e Try to fix cross-compile build
All checks were successful
Tests / Clang total: 3339, passed: 3339
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3339, passed: 3339
Tests / Debug total: 3337, passed: 3337
Tests / SIMD fallback total: 3339, passed: 3339
Tests / Release [gcc] total: 3339, passed: 3339
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2482, passed: 2482
Tests / Coverage total: 2511, passed: 2511
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.09% (1846/1863) * Branch Coverage: 67.65% (1447/2139) * Complexity Density: 0.00 * Lines of Code: 1863 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-09 20:19:53 -07:00
5516477956 Set linker language in debug build
Some checks failed
Tests / Clang total: 3339, passed: 3339
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3339, passed: 3339
Tests / Debug total: 3337, passed: 3337
Tests / SIMD fallback total: 3339, passed: 3339
Tests / Release [gcc] total: 3339, passed: 3339
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-09 18:07:22 -07:00
f639db18a5 Allow conflict-set to have multiple object files
Some checks failed
Tests / Clang total: 3339, passed: 3339
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3339, passed: 3339
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-10-09 17:49:55 -07:00
f8a1643714 Make exporting ___asan_globals_registered optional
All checks were successful
Tests / Clang total: 3339, passed: 3339
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3339, passed: 3339
Tests / Debug total: 3337, passed: 3337
Tests / SIMD fallback total: 3339, passed: 3339
Tests / Release [gcc] total: 3339, passed: 3339
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2482, passed: 2482
Tests / Coverage total: 2511, passed: 2511
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.09% (1846/1863) * Branch Coverage: 67.65% (1447/2139) * Complexity Density: 0.00 * Lines of Code: 1863 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-10-04 16:05:35 -07:00
a0a961ae58 Allow ___asan_globals_registered to be exported
Some checks failed
Tests / Clang total: 3339, failed: 2, passed: 3337
Tests / 64 bit versions total: 3339, failed: 2, passed: 3337
Tests / Debug total: 3337, passed: 3337
Tests / SIMD fallback total: 3339, failed: 2, passed: 3337
Tests / Release [gcc] total: 3339, failed: 2, passed: 3337
Tests / Release [gcc,aarch64] total: 2482, failed: 2, passed: 2480
Tests / Coverage total: 2511, passed: 2511
weaselab/conflict-set/pipeline/head There was a failure building this commit
For if someone wants to build the static library with asan
2024-10-04 16:01:55 -07:00
f41a62471b Add tail-call based interleaving approach
All checks were successful
Tests / Clang total: 3339, passed: 3339
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3339, passed: 3339
Tests / Debug total: 3337, passed: 3337
Tests / SIMD fallback total: 3339, passed: 3339
Tests / Release [gcc] total: 3339, passed: 3339
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2482, passed: 2482
Tests / Coverage total: 2511, passed: 2511
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.09% (1846/1863) * Branch Coverage: 67.65% (1447/2139) * Complexity Density: 0.00 * Lines of Code: 1863 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-09-23 12:52:15 -07:00
d8f85dedc4 Add to corpus
All checks were successful
Tests / Clang total: 3339, passed: 3339
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3339, passed: 3339
Tests / Debug total: 3337, passed: 3337
Tests / SIMD fallback total: 3339, passed: 3339
Tests / Release [gcc] total: 3339, passed: 3339
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2482, passed: 2482
Tests / Coverage total: 2511, passed: 2511
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.09% (1846/1863) * Branch Coverage: 67.65% (1447/2139) * Complexity Density: 0.00 * Lines of Code: 1863 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-09-14 15:02:47 -07:00
656939560b Add GCOVR_EXCL_LINE on covered line 2024-09-14 14:35:51 -07:00
5580f9b71d Run script tests under valgrind too
Some checks failed
Tests / Clang total: 3307, passed: 3307
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3307, passed: 3307
Tests / Debug total: 3305, passed: 3305
Tests / SIMD fallback total: 3307, passed: 3307
Tests / Release [gcc] total: 3307, passed: 3307
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2458, passed: 2458
Tests / Coverage total: 2487, passed: 2487
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.03% (1846/1864) * Branch Coverage: 67.65% (1447/2139) * Complexity Density: 0.00 * Lines of Code: 1864 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-09-14 13:51:45 -07:00
628d16b7e6 Annotate zero argument as maybe_unused 2024-09-14 13:47:08 -07:00
d9e4a7d1b6 Remove bogus assert
Some checks failed
Tests / Clang total: 3296, passed: 3296
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3296, passed: 3296
Tests / Debug total: 3294, passed: 3294
Tests / SIMD fallback total: 3296, passed: 3296
Tests / Release [gcc] total: 3296, passed: 3296
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |2|0|2|0|:zzz:
Tests / Release [gcc,aarch64] total: 2458, passed: 2458
Tests / Coverage total: 2476, passed: 2476
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 98.77% (1841/1864) * Branch Coverage: 67.55% (1445/2139) * Complexity Density: 0.00 * Lines of Code: 1864 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-09-14 10:58:48 -07:00
52201fa4c7 Use signed compare
Some checks failed
Tests / Clang total: 3296, failed: 38, passed: 3258
Tests / 64 bit versions total: 3296, passed: 3296
Tests / Debug total: 3294, failed: 76, passed: 3218
Tests / SIMD fallback total: 3296, passed: 3296
Tests / Release [gcc] total: 3296, failed: 38, passed: 3258
Tests / Release [gcc,aarch64] total: 2458, passed: 2458
Tests / Coverage total: 2476, failed: 76, passed: 2400
weaselab/conflict-set/pipeline/head There was a failure building this commit
Unsigned compare is incorrect here
2024-09-13 22:55:22 -07:00
0814822d82 avx512 implementations for fixupMaxVersion
Some checks failed
Tests / Clang total: 3296, failed: 1, passed: 3295
Tests / 64 bit versions total: 3296, passed: 3296
Tests / Debug total: 3294, failed: 1, passed: 3293
Tests / SIMD fallback total: 3296, passed: 3296
Tests / Release [gcc] total: 3296, failed: 1, passed: 3295
Tests / Release [gcc,aarch64] total: 2458, passed: 2458
Tests / Coverage total: 2476, failed: 1, passed: 2475
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-09-13 22:01:56 -07:00
41df2398e8 Add to corpus 2024-09-13 20:35:52 -07:00
84c4d0fcba More usages of getNodeIndexExists
All checks were successful
Tests / Clang total: 3244, passed: 3244
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3244, passed: 3244
Tests / Debug total: 3242, passed: 3242
Tests / SIMD fallback total: 3244, passed: 3244
Tests / Release [gcc] total: 3244, passed: 3244
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2419, passed: 2419
Tests / Coverage total: 2437, passed: 2437
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.24% (1823/1837) * Branch Coverage: 68.06% (1447/2126) * Complexity Density: 0.00 * Lines of Code: 1837 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-09-12 22:22:16 -07:00
6241533dfb Improve codegen for getChildExists(Node{3,16}*, ...) 2024-09-12 22:05:00 -07:00
0abf6a1ecf Improve Node3 search codegen
All checks were successful
Tests / Clang total: 3244, passed: 3244
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / 64 bit versions total: 3244, passed: 3244
Tests / Debug total: 3242, passed: 3242
Tests / SIMD fallback total: 3244, passed: 3244
Tests / Release [gcc] total: 3244, passed: 3244
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 2419, passed: 2419
Tests / Coverage total: 2437, passed: 2437
Code Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 99.23% (1807/1821) * Branch Coverage: 68.22% (1434/2102) * Complexity Density: 0.00 * Lines of Code: 1821 #### Quality Gates Summary Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
2024-09-12 17:12:41 -07:00
1031 changed files with 2177 additions and 842 deletions

View File

@@ -332,16 +332,22 @@ void benchWorstCaseForRadixRangeRead() {
auto end = std::vector<uint8_t>(kKeyLenForWorstCase - 1, 255);
end.push_back(254);
weaselab::ConflictSet::Result result;
weaselab::ConflictSet::ReadRange r{
{begin.data(), int(begin.size())}, {end.data(), int(end.size())}, 0};
weaselab::ConflictSet::ReadRange r[] = {
{{begin.data(), int(begin.size())}, {end.data(), int(end.size())}, 0},
};
weaselab::ConflictSet::Result results[sizeof(r) / sizeof(r[0])];
for (auto &result : results) {
result = weaselab::ConflictSet::TooOld;
}
bench.batch(sizeof(r) / sizeof(r[0]));
bench.run("worst case for radix tree", [&]() {
for (int i = 0; i < 256; ++i) {
result = weaselab::ConflictSet::TooOld;
cs[i]->check(&r, &result, 1);
if (result != weaselab::ConflictSet::Commit) {
abort();
cs[i]->check(r, results, sizeof(r) / sizeof(r[0]));
for (auto result : results) {
if (result != weaselab::ConflictSet::Commit) {
abort();
}
}
}
});

View File

@@ -33,6 +33,15 @@ endif()
add_compile_options(-fdata-sections -ffunction-sections -Wswitch-enum
-Werror=switch-enum -fPIC)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_link_options("-Wno-unused-command-line-argument")
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_compile_options("-Wno-maybe-uninitialized")
endif()
if(NOT APPLE)
# This causes some versions of clang to crash on macos
add_compile_options(-g -fno-omit-frame-pointer)
@@ -95,12 +104,23 @@ target_compile_options(${PROJECT_NAME}-object PRIVATE -fno-exceptions
-fvisibility=hidden)
target_include_directories(${PROJECT_NAME}-object
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
if(NOT LD_EXE)
set(LD_EXE ld)
endif()
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o
COMMAND ${LD_EXE} -r $<TARGET_OBJECTS:${PROJECT_NAME}-object> -o
${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o
DEPENDS $<TARGET_OBJECTS:${PROJECT_NAME}-object>
COMMAND_EXPAND_LISTS)
add_library(${PROJECT_NAME} SHARED $<TARGET_OBJECTS:${PROJECT_NAME}-object>)
add_library(${PROJECT_NAME} SHARED ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o)
set_target_properties(
${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_CURRENT_BINARY_DIR}/radix_tree")
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
if(CMAKE_BUILD_TYPE STREQUAL Debug)
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
else()
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)
endif()
@@ -110,19 +130,13 @@ if(HAS_VERSION_SCRIPT)
LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/linker.map)
endif()
add_library(${PROJECT_NAME}-static STATIC
$<TARGET_OBJECTS:${PROJECT_NAME}-object>)
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
add_library(${PROJECT_NAME}-static STATIC ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.o)
if(CMAKE_BUILD_TYPE STREQUAL Debug)
set_target_properties(${PROJECT_NAME}-static PROPERTIES LINKER_LANGUAGE CXX)
else()
set_target_properties(${PROJECT_NAME}-static PROPERTIES LINKER_LANGUAGE C)
endif()
if(APPLE)
add_custom_command(
TARGET ${PROJECT_NAME}-static
PRE_LINK
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/privatize_symbols_macos.sh
$<TARGET_OBJECTS:${PROJECT_NAME}-object>)
else()
if(NOT APPLE)
add_custom_command(
TARGET ${PROJECT_NAME}-static
POST_BUILD
@@ -177,10 +191,13 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND BUILD_TESTING)
target_compile_options(driver_skip_list PRIVATE ${TEST_FLAGS})
target_link_libraries(driver_skip_list PRIVATE skip_list)
foreach(TEST ${CORPUS_TESTS})
get_filename_component(hash ${TEST} NAME)
add_test(NAME skip_list_${hash} COMMAND driver_skip_list ${TEST})
endforeach()
# enable to test skip list
if(0)
foreach(TEST ${CORPUS_TESTS})
get_filename_component(hash ${TEST} NAME)
add_test(NAME skip_list_${hash} COMMAND driver_skip_list ${TEST})
endforeach()
endif()
# ad hoc testing
add_executable(conflict_set_main ConflictSet.cpp)
@@ -248,6 +265,19 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND BUILD_TESTING)
add_test(NAME conflict_set_blackbox_${hash} COMMAND driver ${TEST})
endforeach()
find_program(VALGRIND_EXE valgrind)
if(VALGRIND_EXE AND NOT CMAKE_CROSSCOMPILING)
list(LENGTH CORPUS_TESTS len)
math(EXPR last "${len} - 1")
set(partition_size 100)
foreach(i RANGE 0 ${last} ${partition_size})
list(SUBLIST CORPUS_TESTS ${i} ${partition_size} partition)
add_test(NAME conflict_set_blackbox_valgrind_${i}
COMMAND ${VALGRIND_EXE} --error-exitcode=99 --
$<TARGET_FILE:driver> ${partition})
endforeach()
endif()
# scripted tests. Written manually to fill in anything libfuzzer couldn't
# find.
if(NOT CMAKE_CROSSCOMPILING)
@@ -268,19 +298,14 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND BUILD_TESTING)
${Python3_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/test_conflict_set.py test ${TEST}
--build-dir ${CMAKE_CURRENT_BINARY_DIR})
endforeach()
endif()
find_program(VALGRIND_EXE valgrind)
if(VALGRIND_EXE AND NOT CMAKE_CROSSCOMPILING)
list(LENGTH CORPUS_TESTS len)
math(EXPR last "${len} - 1")
set(partition_size 100)
foreach(i RANGE 0 ${last} ${partition_size})
list(SUBLIST CORPUS_TESTS ${i} ${partition_size} partition)
add_test(NAME conflict_set_blackbox_valgrind_${i}
COMMAND ${VALGRIND_EXE} --error-exitcode=99 --
$<TARGET_FILE:driver> ${partition})
if(VALGRIND_EXE AND NOT CMAKE_CROSSCOMPILING)
add_test(
NAME script_test_${TEST}_valgrind
COMMAND
${VALGRIND_EXE} ${Python3_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/test_conflict_set.py test ${TEST}
--build-dir ${CMAKE_CURRENT_BINARY_DIR})
endif()
endforeach()
endif()
@@ -350,6 +375,11 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR AND BUILD_TESTING)
set_target_properties(server_bench PROPERTIES SKIP_BUILD_RPATH ON)
add_executable(interleaving_test InterleavingTest.cpp)
# work around lack of musttail for gcc
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_options(interleaving_test PRIVATE -Og
-foptimize-sibling-calls)
endif()
target_link_libraries(interleaving_test PRIVATE nanobench)
endif()

File diff suppressed because it is too large Load Diff

View File

@@ -8,25 +8,25 @@ RUN chmod -R 777 /tmp
RUN apt-get update
RUN apt-get upgrade -y
RUN TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y \
binutils-aarch64-linux-gnu \
build-essential \
ccache \
clang \
cmake \
curl \
doxygen \
file \
g++-aarch64-linux-gnu \
gcovr \
git \
gperf \
graphviz \
gnupg \
libc6-dbg \
lsb-release \
ninja-build \
pre-commit \
python3-requests \
qemu-user \
rpm \
software-properties-common \
texlive-full \
wget \
zstd
# Install recent valgrind from source
@@ -42,6 +42,11 @@ RUN curl -Ls https://sourceware.org/pub/valgrind/valgrind-3.22.0.tar.bz2 -o valg
cd .. && \
rm -rf /tmp/*
# Recent clang
RUN wget https://apt.llvm.org/llvm.sh && chmod +x ./llvm.sh && ./llvm.sh 20
RUN apt-get -y install clang llvm
# Set after building valgrind, which doesn't build with clang for some reason
ENV CC=clang
ENV CXX=clang++

View File

@@ -22,9 +22,6 @@ void *stepJob(Job *j) {
return done ? nullptr : (void *)stepJob;
}
// So we can look at the disassembly more easily
extern "C" {
void sequential(Job **jobs, int count) {
for (int i = 0; i < count; ++i) {
do {
@@ -94,6 +91,87 @@ void interleaveBoundedCyclicList(Job **jobs, int count) {
}
}
#ifndef __has_attribute
#define __has_attribute(x) 0
#endif
#if __has_attribute(musttail)
#define MUSTTAIL __attribute__((musttail))
#else
#define MUSTTAIL
#endif
struct Context {
constexpr static int kConcurrent = 32;
Job **jobs;
Job *inProgress[kConcurrent];
void (*continuation[kConcurrent])(Context *, int64_t prevJob, int64_t job,
int64_t started, int64_t count);
int nextJob[kConcurrent];
};
void keepGoing(Context *context, int64_t prevJob, int64_t job, int64_t started,
int64_t count) {
prevJob = job;
job = context->nextJob[job];
MUSTTAIL return context->continuation[job](context, prevJob, job, started,
count);
}
void stepJobTailCall(Context *context, int64_t prevJob, int64_t job,
int64_t started, int64_t count);
void complete(Context *context, int64_t prevJob, int64_t job, int64_t started,
int64_t count) {
if (started == count) {
if (prevJob == job) {
return;
}
context->nextJob[prevJob] = context->nextJob[job];
job = prevJob;
} else {
context->inProgress[job] = context->jobs[started++];
context->continuation[job] = stepJobTailCall;
}
prevJob = job;
job = context->nextJob[job];
MUSTTAIL return context->continuation[job](context, prevJob, job, started,
count);
}
void stepJobTailCall(Context *context, int64_t prevJob, int64_t job,
int64_t started, int64_t count) {
auto *j = context->inProgress[job];
auto done = --(*j->input) == 0;
#ifdef __x86_64__
_mm_clflush(j->input);
#endif
if (done) {
MUSTTAIL return complete(context, prevJob, job, started, count);
} else {
context->continuation[job] = stepJobTailCall;
MUSTTAIL return keepGoing(context, prevJob, job, started, count);
}
}
void useTailCalls(Job **jobs, int count) {
if (count == 0) {
return;
}
Context context;
context.jobs = jobs;
int64_t started = std::min(Context::kConcurrent, count);
for (int i = 0; i < started; i++) {
context.inProgress[i] = jobs[i];
context.nextJob[i] = i + 1;
context.continuation[i] = stepJobTailCall;
}
context.nextJob[started - 1] = 0;
int prevJob = started - 1;
int job = 0;
return context.continuation[job](&context, prevJob, job, started, count);
}
void interleaveCyclicList(Job **jobs, int count) {
auto *nextJob = (int *)alloca(sizeof(int) * count);
@@ -117,12 +195,11 @@ void interleaveCyclicList(Job **jobs, int count) {
job = nextJob[job];
}
}
}
int main() {
ankerl::nanobench::Bench bench;
constexpr int kNumJobs = 100;
constexpr int kNumJobs = 10000;
bench.relative(true);
Job jobs[kNumJobs];
@@ -140,6 +217,7 @@ int main() {
for (auto [scheduler, name] :
{std::make_pair(sequentialNoFuncPtr, "sequentialNoFuncPtr"),
std::make_pair(sequential, "sequential"),
std::make_pair(useTailCalls, "useTailCalls"),
std::make_pair(interleaveSwapping, "interleavingSwapping"),
std::make_pair(interleaveBoundedCyclicList,
"interleaveBoundedCyclicList"),

View File

@@ -538,7 +538,7 @@ struct ReferenceImpl {
using Key = ConflictSet::Key;
inline Key operator"" _s(const char *str, size_t size) {
inline Key operator""_s(const char *str, size_t size) {
return {reinterpret_cast<const uint8_t *>(str), int(size)};
}

42
Jenkinsfile vendored
View File

@@ -36,18 +36,6 @@ pipeline {
sh 'pre-commit run --all-files --show-diff-on-failure'
}
}
stage('Clang') {
agent {
dockerfile {
args '-v /home/jenkins/ccache:/ccache'
reuseNode true
}
}
steps {
CleanBuildAndTest("")
recordIssues(tools: [clang()])
}
}
stage('64 bit versions') {
agent {
dockerfile {
@@ -81,7 +69,7 @@ pipeline {
CleanBuildAndTest("-DUSE_SIMD_FALLBACK=ON")
}
}
stage('Release [gcc]') {
stage('Release [clang]') {
agent {
dockerfile {
args '-v /home/jenkins/ccache:/ccache'
@@ -89,8 +77,8 @@ pipeline {
}
}
steps {
CleanBuildAndTest("-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS=-DNVALGRIND")
recordIssues(tools: [gcc()])
CleanBuildAndTest("-DCMAKE_CXX_FLAGS=-DNVALGRIND")
recordIssues(tools: [clang()])
sh '''
cd build
cpack -G DEB
@@ -103,7 +91,19 @@ pipeline {
minio bucket: 'jenkins', credentialsId: 'jenkins-minio', excludes: '', host: 'minio.weaselab.dev', includes: 'build/*.deb,build/*.rpm,paper/*.pdf', targetFolder: '${JOB_NAME}/${BUILD_NUMBER}/${STAGE_NAME}/'
}
}
stage('Release [gcc,aarch64]') {
stage('Release [gcc]') {
agent {
dockerfile {
args '-v /home/jenkins/ccache:/ccache'
reuseNode true
}
}
steps {
CleanBuildAndTest("-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS=-DNVALGRIND")
recordIssues(tools: [gcc()])
}
}
stage('Release [clang,aarch64]') {
agent {
dockerfile {
args '-v /home/jenkins/ccache:/ccache'
@@ -129,16 +129,16 @@ pipeline {
}
steps {
script {
filter_args = "-f ConflictSet.cpp -f LongestCommonPrefix.h -f Metrics.h"
gcov_args = "-f ConflictSet.cpp -f LongestCommonPrefix.h -f Metrics.h --gcov-executable 'llvm-cov gcov' --exclude-noncode-lines"
}
CleanBuildAndTest("-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_FLAGS=--coverage -DCMAKE_CXX_FLAGS=--coverage -DCMAKE_BUILD_TYPE=Debug -DDISABLE_TSAN=ON")
CleanBuildAndTest("-DCMAKE_C_FLAGS=--coverage -DCMAKE_CXX_FLAGS=--coverage -DCMAKE_BUILD_TYPE=Debug -DDISABLE_TSAN=ON")
sh """
gcovr ${filter_args} --cobertura > build/coverage.xml
gcovr ${gcov_args} --cobertura > build/coverage.xml
"""
recordCoverage qualityGates: [[criticality: 'NOTE', metric: 'MODULE']], tools: [[parser: 'COBERTURA', pattern: 'build/coverage.xml']]
sh """
gcovr ${filter_args}
gcovr ${filter_args} --fail-under-line 100 > /dev/null
gcovr ${gcov_args}
gcovr ${gcov_args} --fail-under-line 100 > /dev/null
"""
}
}

View File

@@ -129,7 +129,7 @@ longestCommonPrefix(const uint8_t *ap, const uint8_t *bp, int cl) {
}
int i = 0;
int end;
int end; // GCOVR_EXCL_LINE
// kStride * kUnrollCount at a time
end = cl & ~(kStride * kUnrollFactor - 1);

View File

@@ -1,4 +1,5 @@
#include <atomic>
#include <cstdint>
#include <errno.h>
#include <netdb.h>
#include <stdio.h>
@@ -21,78 +22,56 @@
std::atomic<int64_t> transactions;
constexpr int kBaseSearchDepth = 115;
constexpr int kWindowSize = 10000000;
std::string numToKey(int64_t num) {
constexpr int kNumPrefixes = 250000;
std::string makeKey(int64_t num, int suffixLen) {
std::string result;
result.resize(kBaseSearchDepth + sizeof(int64_t));
memset(result.data(), 0, kBaseSearchDepth);
result.resize(sizeof(int64_t) + suffixLen);
int64_t be = __builtin_bswap64(num);
memcpy(result.data() + kBaseSearchDepth, &be, sizeof(int64_t));
memcpy(result.data(), &be, sizeof(int64_t));
memset(result.data() + sizeof(int64_t), 0, suffixLen);
return result;
}
void workload(weaselab::ConflictSet *cs) {
int64_t version = kWindowSize;
cs->addWrites(nullptr, 0, version);
for (int i = 0; i < kNumPrefixes; ++i) {
for (int j = 0; j < 50; ++j) {
weaselab::ConflictSet::WriteRange wr;
auto k = makeKey(i, j);
wr.begin.p = (const uint8_t *)k.data();
wr.begin.len = k.size();
wr.end.len = 0;
cs->addWrites(&wr, 1, version);
}
}
++version;
for (int i = 0; i < kNumPrefixes; ++i) {
weaselab::ConflictSet::WriteRange wr;
auto k = makeKey(i, 50);
wr.begin.p = (const uint8_t *)k.data();
wr.begin.len = k.size();
wr.end.len = 0;
cs->addWrites(&wr, 1, version);
}
constexpr int kNumReads = 1;
std::vector<weaselab::ConflictSet::Result> results(kNumReads);
for (;; transactions.fetch_add(1, std::memory_order_relaxed)) {
// Reads
{
auto beginK = numToKey(version - kWindowSize);
auto endK = numToKey(version - 1);
auto pointRv = version - kWindowSize + rand() % kWindowSize + 1;
auto pointK = numToKey(pointRv);
weaselab::ConflictSet::ReadRange reads[] = {
{
{(const uint8_t *)pointK.data(), int(pointK.size())},
{nullptr, 0},
pointRv,
},
{
{(const uint8_t *)beginK.data(), int(beginK.size())},
{(const uint8_t *)endK.data(), int(endK.size())},
version - 2,
},
};
weaselab::ConflictSet::Result result[sizeof(reads) / sizeof(reads[0])];
cs->check(reads, result, sizeof(reads) / sizeof(reads[0]));
// for (int i = 0; i < sizeof(reads) / sizeof(reads[0]); ++i) {
// if (result[i] != weaselab::ConflictSet::Commit) {
// fprintf(stderr, "Unexpected conflict: [%s, %s) @ %" PRId64 "\n",
// printable(reads[i].begin).c_str(),
// printable(reads[i].end).c_str(), reads[i].readVersion);
// abort();
// }
// }
std::vector<std::string> keys(kNumReads);
for (auto &k : keys) {
k = makeKey(rand() % kNumPrefixes, 49);
}
// Writes
{
weaselab::ConflictSet::WriteRange w;
auto k = numToKey(version);
w.begin.p = (const uint8_t *)k.data();
w.end.len = 0;
if (version % (kWindowSize / 2) == 0) {
for (int l = 0; l <= k.size(); ++l) {
w.begin.len = l;
cs->addWrites(&w, 1, version);
}
} else {
w.begin.len = k.size();
cs->addWrites(&w, 1, version);
int64_t beginN = version - kWindowSize + rand() % kWindowSize;
auto b = numToKey(beginN);
auto e = numToKey(beginN + 1000);
w.begin.p = (const uint8_t *)b.data();
w.begin.len = b.size();
w.end.p = (const uint8_t *)e.data();
w.end.len = e.size();
cs->addWrites(&w, 1, version);
}
std::vector<weaselab::ConflictSet::ReadRange> reads(kNumReads);
for (int i = 0; i < reads.size(); ++i) {
reads[i].begin.p = (const uint8_t *)(keys[i].data());
reads[i].begin.len = keys[i].size();
reads[i].end.len = 0;
reads[i].readVersion = version - 1;
}
// GC
cs->setOldestVersion(version - kWindowSize);
++version;
cs->check(reads.data(), results.data(), kNumReads);
}
}

View File

@@ -1,7 +1,8 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER "/usr/bin/aarch64-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "/usr/bin/aarch64-linux-gnu-g++")
set(CMAKE_C_COMPILER "clang;--target=aarch64-linux-gnu")
set(CMAKE_CXX_COMPILER "clang++;--target=aarch64-linux-gnu")
set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu)
set(CMAKE_CROSSCOMPILING_EMULATOR "qemu-aarch64;-L;/usr/aarch64-linux-gnu/")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE arm64)
set(LD_EXE "/usr/bin/aarch64-linux-gnu-ld")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More