aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorLee Clagett <code@leeclagett.com>2020-10-13 15:10:54 +0000
committerLee Clagett <code@leeclagett.com>2020-10-13 15:10:54 +0000
commit08eb0949f3bf092720ed7aad71315778953c83a7 (patch)
treec2cf7c901a28dcf93cec48416c4bd019d41af550 /contrib
parentMerge pull request #6927 (diff)
downloadmonero-08eb0949f3bf092720ed7aad71315778953c83a7.tar.xz
Change to more efficient allocation strategy in byte_stream
Diffstat (limited to 'contrib')
-rw-r--r--contrib/epee/include/byte_stream.h15
-rw-r--r--contrib/epee/src/byte_stream.cpp11
2 files changed, 8 insertions, 18 deletions
diff --git a/contrib/epee/include/byte_stream.h b/contrib/epee/include/byte_stream.h
index 42a9e1dd9..30abd050d 100644
--- a/contrib/epee/include/byte_stream.h
+++ b/contrib/epee/include/byte_stream.h
@@ -58,7 +58,6 @@ namespace epee
byte_buffer buffer_; //! Beginning of buffer
std::uint8_t* next_write_; //! Current write position
const std::uint8_t* end_; //! End of buffer
- std::size_t increase_size_; //! Minimum buffer size increase
//! \post `requested <= available()`
void overflow(const std::size_t requested);
@@ -75,29 +74,17 @@ namespace epee
using char_type = std::uint8_t;
using Ch = char_type;
- //! \return Default minimum size increase on buffer overflow
- static constexpr std::size_t default_increase() noexcept { return 4096; }
-
//! Increase internal buffer by at least `byte_stream_increase` bytes.
byte_stream() noexcept
- : byte_stream(default_increase())
- {}
-
- //! Increase internal buffer by at least `increase` bytes.
- explicit byte_stream(const std::size_t increase) noexcept
: buffer_(nullptr),
next_write_(nullptr),
- end_(nullptr),
- increase_size_(increase)
+ end_(nullptr)
{}
byte_stream(byte_stream&& rhs) noexcept;
~byte_stream() noexcept = default;
byte_stream& operator=(byte_stream&& rhs) noexcept;
- //! \return The minimum increase size on buffer overflow
- std::size_t increase_size() const noexcept { return increase_size_; }
-
const std::uint8_t* data() const noexcept { return buffer_.get(); }
std::uint8_t* tellp() const noexcept { return next_write_; }
std::size_t available() const noexcept { return end_ - next_write_; }
diff --git a/contrib/epee/src/byte_stream.cpp b/contrib/epee/src/byte_stream.cpp
index e87d9f0bc..73bba92f2 100644
--- a/contrib/epee/src/byte_stream.cpp
+++ b/contrib/epee/src/byte_stream.cpp
@@ -34,6 +34,11 @@
#include <iostream>
+namespace
+{
+ constexpr const std::size_t minimum_increase = 4096;
+}
+
namespace epee
{
void byte_stream::overflow(const std::size_t requested)
@@ -46,7 +51,7 @@ namespace epee
const std::size_t len = size();
const std::size_t cap = capacity();
- const std::size_t increase = std::max(need, increase_size());
+ const std::size_t increase = std::max(std::max(need, cap), minimum_increase);
next_write_ = nullptr;
end_ = nullptr;
@@ -62,8 +67,7 @@ namespace epee
byte_stream::byte_stream(byte_stream&& rhs) noexcept
: buffer_(std::move(rhs.buffer_)),
next_write_(rhs.next_write_),
- end_(rhs.end_),
- increase_size_(rhs.increase_size_)
+ end_(rhs.end_)
{
rhs.next_write_ = nullptr;
rhs.end_ = nullptr;
@@ -76,7 +80,6 @@ namespace epee
buffer_ = std::move(rhs.buffer_);
next_write_ = rhs.next_write_;
end_ = rhs.end_;
- increase_size_ = rhs.increase_size_;
rhs.next_write_ = nullptr;
rhs.end_ = nullptr;
}