Remove unused MemoryPool::_left

This commit is contained in:
Benoit Blanchon
2023-04-08 09:29:01 +02:00
parent d8f3058efa
commit 9d0714efdf

View File

@ -36,14 +36,6 @@ constexpr size_t sizeofString(size_t n) {
return n + 1 + offsetof(StringNode, data); return n + 1 + offsetof(StringNode, data);
} }
// _begin _end
// v v
// +-------------+--------------+--------------+
// | strings... | (free) | ...variants |
// +-------------+--------------+--------------+
// ^ ^
// _left _right
class MemoryPool { class MemoryPool {
public: public:
MemoryPool(size_t capa, Allocator* allocator = DefaultAllocator::instance()) MemoryPool(size_t capa, Allocator* allocator = DefaultAllocator::instance())
@ -65,10 +57,9 @@ class MemoryPool {
_allocator = src._allocator; _allocator = src._allocator;
_begin = src._begin; _begin = src._begin;
_end = src._end; _end = src._end;
_left = src._left;
_right = src._right; _right = src._right;
_overflowed = src._overflowed; _overflowed = src._overflowed;
src._begin = src._end = src._left = src._right = nullptr; src._begin = src._end = src._right = nullptr;
_strings = src._strings; _strings = src._strings;
src._strings = nullptr; src._strings = nullptr;
return *this; return *this;
@ -97,7 +88,7 @@ class MemoryPool {
} }
size_t size() const { size_t size() const {
size_t total = size_t(_left - _begin + _end - _right); size_t total = size_t(_end - _right);
for (auto node = _strings; node; node = node->next) for (auto node = _strings; node; node = node->next)
total += sizeofString(node->length); total += sizeofString(node->length);
return total; return total;
@ -177,14 +168,13 @@ class MemoryPool {
} }
void clear() { void clear() {
_left = _begin;
_right = _end; _right = _end;
_overflowed = false; _overflowed = false;
deallocAllStrings(); deallocAllStrings();
} }
bool canAlloc(size_t bytes) const { bool canAlloc(size_t bytes) const {
return _left + bytes <= _right; return _begin + bytes <= _right;
} }
bool owns(void* p) const { bool owns(void* p) const {
@ -213,19 +203,8 @@ class MemoryPool {
} }
private: private:
// Squash the free space between strings and variants
//
// _begin _end
// v v
// +-------------+--------------+
// | strings... | ...variants |
// +-------------+--------------+
// ^
// _left _right
//
// This funcion is called before a realloc.
ptrdiff_t squash() { ptrdiff_t squash() {
char* new_right = addPadding(_left); char* new_right = addPadding(_begin);
if (new_right >= _right) if (new_right >= _right)
return 0; return 0;
@ -242,14 +221,12 @@ class MemoryPool {
// This funcion is called after a realloc. // This funcion is called after a realloc.
void movePointers(ptrdiff_t offset) { void movePointers(ptrdiff_t offset) {
_begin += offset; _begin += offset;
_left += offset;
_right += offset; _right += offset;
_end += offset; _end += offset;
} }
void checkInvariants() { void checkInvariants() {
ARDUINOJSON_ASSERT(_begin <= _left); ARDUINOJSON_ASSERT(_begin <= _right);
ARDUINOJSON_ASSERT(_left <= _right);
ARDUINOJSON_ASSERT(_right <= _end); ARDUINOJSON_ASSERT(_right <= _end);
ARDUINOJSON_ASSERT(isAligned(_right)); ARDUINOJSON_ASSERT(isAligned(_right));
} }
@ -278,7 +255,7 @@ class MemoryPool {
void allocPool(size_t capa) { void allocPool(size_t capa) {
auto buf = capa ? reinterpret_cast<char*>(_allocator->allocate(capa)) : 0; auto buf = capa ? reinterpret_cast<char*>(_allocator->allocate(capa)) : 0;
_begin = _left = buf; _begin = buf;
_end = _right = buf ? buf + capa : 0; _end = _right = buf ? buf + capa : 0;
ARDUINOJSON_ASSERT(isAligned(_begin)); ARDUINOJSON_ASSERT(isAligned(_begin));
ARDUINOJSON_ASSERT(isAligned(_right)); ARDUINOJSON_ASSERT(isAligned(_right));
@ -291,7 +268,7 @@ class MemoryPool {
} }
Allocator* _allocator; Allocator* _allocator;
char *_begin, *_left, *_right, *_end; char *_begin, *_right, *_end;
bool _overflowed; bool _overflowed;
StringNode* _strings = nullptr; StringNode* _strings = nullptr;
}; };