diff options
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h b/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h index 2501c4fafd9..47d52bf8991 100644 --- a/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h +++ b/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h @@ -46,6 +46,15 @@ public: } } + void remap(vespalib::ArrayRef<AtomicEntryRef> refs) const { + for (auto &atomic_ref : refs) { + auto ref = atomic_ref.load_relaxed(); + if (ref.valid() && _compacting_buffer.has(ref)) { + atomic_ref.store_release(remap(ref)); + } + } + } + const EntryRefFilter& get_entry_ref_filter() const noexcept { return _compacting_buffer; } virtual void done() = 0; |