AK: Move String::~String() and String::destroy_string() to StringBase

This commit is contained in:
Dan Klishch 2023-10-28 15:42:33 -04:00 committed by Andrew Kaster
parent 54d149bc25
commit 1b09a1851e
Notes: sideshowbarker 2024-07-17 09:56:35 +09:00
4 changed files with 15 additions and 14 deletions

View File

@ -122,12 +122,6 @@ void StringData::compute_hash() const
}
void String::destroy_string()
{
if (!is_short_string())
m_data->unref();
}
String String::from_utf8_without_validation(ReadonlyBytes bytes)
{
if (bytes.size() <= MAX_SHORT_STRING_BYTE_COUNT) {

View File

@ -48,12 +48,6 @@ public:
using StringBase::StringBase;
constexpr ~String()
{
if (!is_constant_evaluated())
destroy_string();
}
// Creates an empty (zero-length) String.
constexpr String()
: StringBase(ShortString { SHORT_STRING_FLAG, {} })
@ -209,8 +203,6 @@ public:
private:
using ShortString = Detail::ShortString;
void destroy_string();
};
template<>

View File

@ -73,4 +73,10 @@ bool StringBase::operator==(StringBase const& other) const
return bytes() == other.bytes();
}
void StringBase::destroy_string()
{
if (!is_short_string())
m_data->unref();
}
}

View File

@ -42,6 +42,12 @@ public:
StringBase& operator=(StringBase&&);
StringBase& operator=(StringBase const&);
constexpr ~StringBase()
{
if (!is_constant_evaluated())
destroy_string();
}
// NOTE: This is primarily interesting to unit tests.
[[nodiscard]] bool is_short_string() const;
@ -71,6 +77,9 @@ protected:
ShortString m_short_string;
Detail::StringData const* m_data { nullptr };
};
private:
void destroy_string();
};
}