mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-11 18:20:43 +09:00
AK: Inline more of the String and FlyString member functions
This is to help recover some of the performance regression from no longer using DeprecatedFlyString (which was aggressively inlined.)
This commit is contained in:
parent
275985ff3d
commit
7165d69868
Notes:
github-actions[bot]
2025-03-26 02:21:13 +00:00
Author: https://github.com/awesomekling
Commit: 7165d69868
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4092
Reviewed-by: https://github.com/gmta ✅
4 changed files with 7 additions and 42 deletions
|
@ -79,16 +79,6 @@ FlyString& FlyString::operator=(String const& string)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FlyString::is_empty() const
|
|
||||||
{
|
|
||||||
return bytes_as_string_view().is_empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned FlyString::hash() const
|
|
||||||
{
|
|
||||||
return m_data.hash();
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 FlyString::ascii_case_insensitive_hash() const
|
u32 FlyString::ascii_case_insensitive_hash() const
|
||||||
{
|
{
|
||||||
return case_insensitive_string_hash(reinterpret_cast<char const*>(bytes().data()), bytes().size());
|
return case_insensitive_string_hash(reinterpret_cast<char const*>(bytes().data()), bytes().size());
|
||||||
|
@ -110,21 +100,6 @@ Utf8View FlyString::code_points() const
|
||||||
return Utf8View { bytes_as_string_view() };
|
return Utf8View { bytes_as_string_view() };
|
||||||
}
|
}
|
||||||
|
|
||||||
ReadonlyBytes FlyString::bytes() const
|
|
||||||
{
|
|
||||||
return bytes_as_string_view().bytes();
|
|
||||||
}
|
|
||||||
|
|
||||||
StringView FlyString::bytes_as_string_view() const
|
|
||||||
{
|
|
||||||
return m_data.bytes();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FlyString::operator==(String const& other) const
|
|
||||||
{
|
|
||||||
return m_data == other;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FlyString::operator==(StringView string) const
|
bool FlyString::operator==(StringView string) const
|
||||||
{
|
{
|
||||||
return bytes_as_string_view() == string;
|
return bytes_as_string_view() == string;
|
||||||
|
|
|
@ -32,19 +32,19 @@ public:
|
||||||
FlyString(String const&);
|
FlyString(String const&);
|
||||||
FlyString& operator=(String const&);
|
FlyString& operator=(String const&);
|
||||||
|
|
||||||
[[nodiscard]] bool is_empty() const;
|
[[nodiscard]] bool is_empty() const { return m_data.byte_count() == 0; }
|
||||||
[[nodiscard]] unsigned hash() const;
|
[[nodiscard]] unsigned hash() const { return m_data.hash(); }
|
||||||
[[nodiscard]] u32 ascii_case_insensitive_hash() const;
|
[[nodiscard]] u32 ascii_case_insensitive_hash() const;
|
||||||
|
|
||||||
explicit operator String() const;
|
explicit operator String() const;
|
||||||
String to_string() const;
|
String to_string() const;
|
||||||
|
|
||||||
[[nodiscard]] Utf8View code_points() const;
|
[[nodiscard]] Utf8View code_points() const;
|
||||||
[[nodiscard]] ReadonlyBytes bytes() const;
|
[[nodiscard]] ReadonlyBytes bytes() const { return m_data.bytes(); }
|
||||||
[[nodiscard]] StringView bytes_as_string_view() const;
|
[[nodiscard]] StringView bytes_as_string_view() const { return m_data.bytes(); }
|
||||||
|
|
||||||
[[nodiscard]] ALWAYS_INLINE bool operator==(FlyString const& other) const { return m_data.raw({}) == other.m_data.raw({}); }
|
[[nodiscard]] ALWAYS_INLINE bool operator==(FlyString const& other) const { return m_data.raw({}) == other.m_data.raw({}); }
|
||||||
[[nodiscard]] bool operator==(String const&) const;
|
[[nodiscard]] bool operator==(String const& other) const { return m_data == other; }
|
||||||
[[nodiscard]] bool operator==(StringView) const;
|
[[nodiscard]] bool operator==(StringView) const;
|
||||||
[[nodiscard]] bool operator==(char const*) const;
|
[[nodiscard]] bool operator==(char const*) const;
|
||||||
|
|
||||||
|
|
|
@ -156,16 +156,6 @@ ErrorOr<String> String::repeated(u32 code_point, size_t count)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringView String::bytes_as_string_view() const&
|
|
||||||
{
|
|
||||||
return StringView(bytes());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool String::is_empty() const
|
|
||||||
{
|
|
||||||
return bytes().size() == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ErrorOr<String> String::vformatted(StringView fmtstr, TypeErasedFormatParams& params)
|
ErrorOr<String> String::vformatted(StringView fmtstr, TypeErasedFormatParams& params)
|
||||||
{
|
{
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
|
|
|
@ -138,10 +138,10 @@ public:
|
||||||
[[nodiscard]] Utf8View code_points() const&& = delete;
|
[[nodiscard]] Utf8View code_points() const&& = delete;
|
||||||
|
|
||||||
// Returns true if the String is zero-length.
|
// Returns true if the String is zero-length.
|
||||||
[[nodiscard]] bool is_empty() const;
|
[[nodiscard]] bool is_empty() const { return byte_count() == 0; }
|
||||||
|
|
||||||
// Returns a StringView covering the full length of the string. Note that iterating this will go byte-at-a-time, not code-point-at-a-time.
|
// Returns a StringView covering the full length of the string. Note that iterating this will go byte-at-a-time, not code-point-at-a-time.
|
||||||
[[nodiscard]] StringView bytes_as_string_view() const&;
|
[[nodiscard]] StringView bytes_as_string_view() const& { return StringView(bytes()); }
|
||||||
[[nodiscard]] StringView bytes_as_string_view() const&& = delete;
|
[[nodiscard]] StringView bytes_as_string_view() const&& = delete;
|
||||||
|
|
||||||
[[nodiscard]] size_t count(StringView needle) const { return StringUtils::count(bytes_as_string_view(), needle); }
|
[[nodiscard]] size_t count(StringView needle) const { return StringUtils::count(bytes_as_string_view(), needle); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue