AK: Inline more of the String and FlyString member functions
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run

This is to help recover some of the performance regression from no
longer using DeprecatedFlyString (which was aggressively inlined.)
This commit is contained in:
Andreas Kling 2025-03-26 00:43:52 +00:00 committed by Jelle Raaijmakers
parent 275985ff3d
commit 7165d69868
Notes: github-actions[bot] 2025-03-26 02:21:13 +00:00
4 changed files with 7 additions and 42 deletions

View file

@ -79,16 +79,6 @@ FlyString& FlyString::operator=(String const& string)
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
{
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() };
}
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
{
return bytes_as_string_view() == string;

View file

@ -32,19 +32,19 @@ public:
FlyString(String const&);
FlyString& operator=(String const&);
[[nodiscard]] bool is_empty() const;
[[nodiscard]] unsigned hash() const;
[[nodiscard]] bool is_empty() const { return m_data.byte_count() == 0; }
[[nodiscard]] unsigned hash() const { return m_data.hash(); }
[[nodiscard]] u32 ascii_case_insensitive_hash() const;
explicit operator String() const;
String to_string() const;
[[nodiscard]] Utf8View code_points() const;
[[nodiscard]] ReadonlyBytes bytes() const;
[[nodiscard]] StringView bytes_as_string_view() const;
[[nodiscard]] ReadonlyBytes bytes() const { return m_data.bytes(); }
[[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]] bool operator==(String const&) const;
[[nodiscard]] bool operator==(String const& other) const { return m_data == other; }
[[nodiscard]] bool operator==(StringView) const;
[[nodiscard]] bool operator==(char const*) const;

View file

@ -156,16 +156,6 @@ ErrorOr<String> String::repeated(u32 code_point, size_t count)
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)
{
StringBuilder builder;

View file

@ -138,10 +138,10 @@ public:
[[nodiscard]] Utf8View code_points() const&& = delete;
// 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.
[[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]] size_t count(StringView needle) const { return StringUtils::count(bytes_as_string_view(), needle); }