AK: Remove StringBuilder's UseInlineCapacityOnly feature

This feature is unused in Ladybird and will complicate an upcoming patch
to hand-off StringBuilder's memory to String.
This commit is contained in:
Timothy Flynn 2024-07-19 09:41:05 -04:00 committed by Andreas Kling
parent 33207174a9
commit af220af8bf
Notes: github-actions[bot] 2024-07-20 07:31:48 +00:00
2 changed files with 12 additions and 35 deletions

View file

@ -18,32 +18,6 @@
namespace AK {
inline ErrorOr<void> StringBuilder::will_append(size_t size)
{
if (m_use_inline_capacity_only == UseInlineCapacityOnly::Yes) {
VERIFY(m_buffer.capacity() == StringBuilder::inline_capacity);
Checked<size_t> current_pointer = m_buffer.size();
current_pointer += size;
VERIFY(!current_pointer.has_overflow());
if (current_pointer <= StringBuilder::inline_capacity) {
return {};
}
return Error::from_errno(ENOMEM);
}
Checked<size_t> needed_capacity = m_buffer.size();
needed_capacity += size;
VERIFY(!needed_capacity.has_overflow());
// Prefer to completely use the existing capacity first
if (needed_capacity <= m_buffer.capacity())
return {};
Checked<size_t> expanded_capacity = needed_capacity;
expanded_capacity *= 2;
VERIFY(!expanded_capacity.has_overflow());
TRY(m_buffer.try_ensure_capacity(expanded_capacity.value()));
return {};
}
ErrorOr<StringBuilder> StringBuilder::create(size_t initial_capacity)
{
StringBuilder builder;
@ -56,9 +30,19 @@ StringBuilder::StringBuilder(size_t initial_capacity)
m_buffer.ensure_capacity(initial_capacity);
}
StringBuilder::StringBuilder(UseInlineCapacityOnly use_inline_capacity_only)
: m_use_inline_capacity_only(use_inline_capacity_only)
inline ErrorOr<void> StringBuilder::will_append(size_t size)
{
Checked<size_t> needed_capacity = m_buffer.size();
needed_capacity += size;
VERIFY(!needed_capacity.has_overflow());
// Prefer to completely use the existing capacity first
if (needed_capacity <= m_buffer.capacity())
return {};
Checked<size_t> expanded_capacity = needed_capacity;
expanded_capacity *= 2;
VERIFY(!expanded_capacity.has_overflow());
TRY(m_buffer.try_ensure_capacity(expanded_capacity.value()));
return {};
}
size_t StringBuilder::length() const

View file

@ -23,12 +23,6 @@ public:
static ErrorOr<StringBuilder> create(size_t initial_capacity = inline_capacity);
explicit StringBuilder(size_t initial_capacity = inline_capacity);
enum class UseInlineCapacityOnly {
Yes,
No,
};
explicit StringBuilder(UseInlineCapacityOnly use_inline_capacity_only);
~StringBuilder() = default;
ErrorOr<void> try_append(StringView);
@ -106,7 +100,6 @@ private:
u8* data();
u8 const* data() const;
UseInlineCapacityOnly m_use_inline_capacity_only { UseInlineCapacityOnly::No };
Detail::ByteBuffer<inline_capacity> m_buffer;
};