summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-09-20 15:13:51 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-09-20 15:20:17 +0000
commit1c70de02384bf5aafa9813ef29c9250855a99651 (patch)
treec64e48524bf00da8c5c5f39e03741f307c88c589 /searchlib
parent6ec455306b35f212987ee238196a65295b5a6099 (diff)
Skip rangecheck with assert unless compiled explicit for that.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvector.h22
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp7
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fieldwriter.h1
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp7
6 files changed, 25 insertions, 15 deletions
diff --git a/searchlib/src/vespa/searchlib/common/bitvector.h b/searchlib/src/vespa/searchlib/common/bitvector.h
index 149e57390af..18b7c15b2dc 100644
--- a/searchlib/src/vespa/searchlib/common/bitvector.h
+++ b/searchlib/src/vespa/searchlib/common/bitvector.h
@@ -6,7 +6,9 @@
#include <vespa/vespalib/util/alloc.h>
#include <vespa/vespalib/util/atomic.h>
#include <algorithm>
+#if VESPA_ENABLE_BITVECTOR_RANGE_CHECK
#include <cassert>
+#endif
namespace vespalib {
class nbostream;
@@ -43,7 +45,7 @@ public:
Range range() const noexcept { return {getStartIndex(), size()}; }
Index size() const { return vespalib::atomic::load_ref_relaxed(_sz); }
Index sizeBytes() const { return numBytes(getActiveSize()); }
- bool testBit(Index idx) const {
+ bool testBit(Index idx) const noexcept {
return ((load(_words[wordNum(idx)]) & mask(idx)) != 0);
}
Index getSizeAcquire() const {
@@ -70,7 +72,7 @@ public:
*
* @return The Index of the first valid bit of the bitvector.
*/
- Index getStartIndex() const { return _startOffset; }
+ Index getStartIndex() const noexcept { return _startOffset; }
/**
* Get next bit set in the bitvector (inclusive start).
@@ -79,11 +81,11 @@ public:
* @param start first bit to check
* @return next bit set in the bitvector.
*/
- Index getNextTrueBit(Index start) const {
- return getNextBit([](Word w) { return w; }, start);
+ Index getNextTrueBit(Index start) const noexcept {
+ return getNextBit([](Word w) noexcept { return w; }, start);
}
- Index getNextFalseBit(Index start) const {
- return getNextBit([](Word w) { return ~w; }, start);
+ Index getNextFalseBit(Index start) const noexcept {
+ return getNextBit([](Word w) noexcept { return ~w; }, start);
}
/**
@@ -152,7 +154,11 @@ public:
store_unchecked(_words[wordNum(idx)], _words[wordNum(idx)] ^ mask(idx));
}
void range_check(Index idx) const {
+#if VESPA_ENABLE_BITVECTOR_RANGE_CHECK
assert(!_enable_range_check || (idx >= _startOffset && idx < _sz));
+#else
+ (void) idx;
+#endif
}
void setBit(Index idx) {
range_check(idx);
@@ -300,7 +306,7 @@ protected:
static Alloc allocatePaddedAndAligned(Index start, Index end, Index capacity, const Alloc* init_alloc = nullptr);
private:
- static Word load(const Word &word) { return vespalib::atomic::load_ref_relaxed(word); }
+ static Word load(const Word &word) noexcept { return vespalib::atomic::load_ref_relaxed(word); }
VESPA_DLL_LOCAL void store(Word &word, Word value);
static void store_unchecked(Word &word, Word value) {
return vespalib::atomic::store_ref_relaxed(word, value);
@@ -354,7 +360,7 @@ private:
foreach_bit(func, word & ~endBits(last), lastIndex << numWordBits());
}
template<typename WordConverter>
- Index getNextBit(WordConverter conv, Index start) const {
+ Index getNextBit(WordConverter conv, Index start) const noexcept {
Index index(wordNum(start));
const Word *words(_words);
Word t(conv(load(words[index])) & checkTab(start));
diff --git a/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp b/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp
index 6291636155b..87d6b8db1bb 100644
--- a/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp
+++ b/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp
@@ -4,6 +4,7 @@
#include <vespa/searchlib/queryeval/emptysearch.h>
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
#include <vespa/vespalib/objects/visit.h>
+#include <cassert>
namespace search {
@@ -49,7 +50,7 @@ public:
void and_hits_into(BitVector &result, uint32_t begin_id) override;
bool isInverted() const override { return inverse; }
private:
- bool isSet(uint32_t docId) const { return inverse == ! _bv.testBit(docId); }
+ bool isSet(uint32_t docId) const noexcept { return inverse == ! _bv.testBit(docId); }
};
template<bool inverse>
@@ -78,10 +79,10 @@ private:
void initRange(uint32_t begin, uint32_t end) override;
void doSeek(uint32_t docId) override;
Trinary is_strict() const override { return Trinary::True; }
- uint32_t getNextBit(uint32_t docId) const {
+ uint32_t getNextBit(uint32_t docId) const noexcept {
return inverse ? this->_bv.getNextFalseBit(docId) : this->_bv.getNextTrueBit(docId);
}
- uint32_t getFirstBit(uint32_t docId) const {
+ uint32_t getFirstBit(uint32_t docId) const noexcept {
return inverse ? this->_bv.getFirstFalseBit(docId) : this->_bv.getFirstTrueBit(docId);
}
};
diff --git a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h
index 45ab32bc917..871bca03573 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h
+++ b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h
@@ -6,6 +6,7 @@
#include <vespa/searchlib/index/postinglistfile.h>
#include <vespa/searchlib/bitcompression/posocccompression.h>
#include <vespa/searchlib/bitcompression/countcompression.h>
+#include <cassert>
namespace search::index { class Schema; }
diff --git a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp
index 542b6f5f6eb..adc08576a57 100644
--- a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp
@@ -95,7 +95,7 @@ FileHandle::open(vespalib::stringref dir,
const TuneFileSeqWrite &tuneFileWrite,
const FileHeaderContext &fileHeaderContext)
{
- assert(_fieldWriter.get() == nullptr);
+ assert( ! _fieldWriter);
_fieldWriter = std::make_shared<FieldWriter>(docIdLimit, numWordIds, dir + "/");
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp b/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp
index 5d4f1e2f785..de464204f88 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp
@@ -5,6 +5,7 @@
#include <vespa/vespalib/data/fileheader.h>
#include <vespa/searchlib/queryeval/emptysearch.h>
#include <vespa/fastos/file.h>
+#include <cassert>
#include <vespa/log/log.h>
LOG_SETUP(".diskindex.zcposoccrandread");
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp b/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp
index b4ebfdc9629..c45d0d6f382 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp
@@ -5,6 +5,7 @@
#include <vespa/searchlib/index/dummyfileheadercontext.h>
#include <vespa/searchlib/index/i_field_length_inspector.h>
#include <vespa/vespalib/io/fileutil.h>
+#include <cassert>
namespace search::diskindex {
@@ -21,11 +22,11 @@ namespace {
class MockFieldLengthInspector : public IFieldLengthInspector {
FieldLengthInfo get_field_length_info(const vespalib::string& field_name) const override {
if (field_name == "f1") {
- return FieldLengthInfo(3.5, 21);
+ return {3.5, 21};
} else if (field_name == "f2") {
- return FieldLengthInfo(4.0, 23);
+ return {4.0, 23};
} else {
- return FieldLengthInfo();
+ return {};
}
}
};