LibJS: Revert common error types to only hold a single string

Before porting to UTF-16, these instances held a String. The port to
UTF-16 changed them to hold the original string as a StringView, and
lazily allocated the UTF-16 message as needed. This somehow negatively
impacting the zlib.js benchmark in the Octane suite.
This commit is contained in:
Timothy Flynn 2025-08-17 18:37:47 -04:00 committed by Jelle Raaijmakers
parent f8d414ec37
commit 695bbcb991
2 changed files with 6 additions and 14 deletions

View File

@ -9,15 +9,8 @@
namespace JS {
#define __ENUMERATE_JS_ERROR(name, message) \
const ErrorType ErrorType::name = ErrorType(message##sv);
const ErrorType ErrorType::name = ErrorType(message##_utf16);
JS_ENUMERATE_ERROR_TYPES(__ENUMERATE_JS_ERROR)
#undef __ENUMERATE_JS_ERROR
Utf16String const& ErrorType::message() const
{
if (m_message.is_empty())
m_message = Utf16String::from_utf8_without_validation(m_format);
return m_message;
}
}

View File

@ -314,17 +314,16 @@ public:
JS_ENUMERATE_ERROR_TYPES(__ENUMERATE_JS_ERROR)
#undef __ENUMERATE_JS_ERROR
StringView format() const { return m_format; }
Utf16String const& message() const;
StringView format() const { return m_message.ascii_view(); }
Utf16String const& message() const { return m_message; }
private:
explicit ErrorType(StringView format)
: m_format(format)
explicit ErrorType(Utf16String message)
: m_message(move(message))
{
}
StringView m_format;
mutable Utf16String m_message;
Utf16String m_message;
};
}