summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-01-27 22:14:03 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-01-28 14:04:50 +0000
commita5903ad899e38041cfe20f0acc110bbfd9d21d2b (patch)
tree93447bc245b1e31d19601a6bb350cd7629ba1523 /document
parentf64c699df04adb4eedd5a159c7e97af65670cda9 (diff)
Set field directly.
Diffstat (limited to 'document')
-rw-r--r--document/src/vespa/document/fieldvalue/serializablearray.cpp11
-rw-r--r--document/src/vespa/document/fieldvalue/serializablearray.h4
-rw-r--r--document/src/vespa/document/fieldvalue/structfieldvalue.cpp2
3 files changed, 8 insertions, 9 deletions
diff --git a/document/src/vespa/document/fieldvalue/serializablearray.cpp b/document/src/vespa/document/fieldvalue/serializablearray.cpp
index 3664554ffcc..080dd16128c 100644
--- a/document/src/vespa/document/fieldvalue/serializablearray.cpp
+++ b/document/src/vespa/document/fieldvalue/serializablearray.cpp
@@ -26,13 +26,11 @@ public:
}
-SerializableArray::SerializableArray(EntryMap entries, ByteBuffer buffer,
- CompressionConfig::Type comp_type, uint32_t uncompressed_length)
- : _entries(std::move(entries)),
- _uncompSerData(),
- _unlikely()
+void
+SerializableArray::set(EntryMap entries, ByteBuffer buffer,
+ CompressionConfig::Type comp_type, uint32_t uncompressed_length)
{
-
+ _entries = std::move(entries);
if (CompressionConfig::isCompressed(comp_type)) {
_unlikely = std::make_unique<RarelyUsedBuffers>();
_unlikely->_compSerData = std::move(buffer);
@@ -40,6 +38,7 @@ SerializableArray::SerializableArray(EntryMap entries, ByteBuffer buffer,
_unlikely->_uncompressedLength = uncompressed_length;
} else {
_uncompSerData = std::move(buffer);
+ _unlikely.reset();
}
}
diff --git a/document/src/vespa/document/fieldvalue/serializablearray.h b/document/src/vespa/document/fieldvalue/serializablearray.h
index 30777d7e337..11186593e76 100644
--- a/document/src/vespa/document/fieldvalue/serializablearray.h
+++ b/document/src/vespa/document/fieldvalue/serializablearray.h
@@ -89,10 +89,10 @@ public:
SerializableArray& operator=(const SerializableArray&);
SerializableArray(SerializableArray &&) noexcept;
SerializableArray& operator=(SerializableArray &&) noexcept;
- SerializableArray(EntryMap entries, ByteBuffer buffer,
- CompressionConfig::Type comp_type, uint32_t uncompressed_length);
~SerializableArray();
+ void set(EntryMap entries, ByteBuffer buffer,
+ CompressionConfig::Type comp_type, uint32_t uncompressed_length);
/**
* Stores a value in the array.
*
diff --git a/document/src/vespa/document/fieldvalue/structfieldvalue.cpp b/document/src/vespa/document/fieldvalue/structfieldvalue.cpp
index 3763a5e3405..bc2dd2a059a 100644
--- a/document/src/vespa/document/fieldvalue/structfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/structfieldvalue.cpp
@@ -67,7 +67,7 @@ StructFieldValue::lazyDeserialize(const FixedTypeRepo &repo,
_doc_type = &repo.getDocumentType();
_version = version;
- _fields = SerializableArray(std::move(fm), std::move(buffer), comp_type, uncompressed_length);
+ _fields.set(std::move(fm), std::move(buffer), comp_type, uncompressed_length);
_hasChanged = false;
}