mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 17:10:23 +00:00
LibJS: Avoid creating a temporary String in StringOrSymbol::operator==
This commit is contained in:
parent
d542049596
commit
3d053f244f
Notes:
sideshowbarker
2024-07-19 02:03:43 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/3d053f244f0
1 changed files with 10 additions and 2 deletions
|
@ -29,6 +29,7 @@
|
|||
#include <LibJS/Runtime/PrimitiveString.h>
|
||||
#include <LibJS/Runtime/Symbol.h>
|
||||
#include <LibJS/Runtime/Value.h>
|
||||
#include <string.h>
|
||||
|
||||
namespace JS {
|
||||
|
||||
|
@ -118,8 +119,15 @@ public:
|
|||
|
||||
ALWAYS_INLINE bool operator==(const StringOrSymbol& other) const
|
||||
{
|
||||
if (is_string())
|
||||
return other.is_string() && as_string() == other.as_string();
|
||||
if (is_string()) {
|
||||
if (!other.is_string())
|
||||
return false;
|
||||
auto* this_impl = static_cast<const StringImpl*>(m_ptr);
|
||||
auto* other_impl = static_cast<const StringImpl*>(other.m_ptr);
|
||||
if (this_impl->length() != other_impl->length())
|
||||
return false;
|
||||
return !memcmp(this_impl->characters(), other_impl->characters(), this_impl->length());
|
||||
}
|
||||
if (is_symbol())
|
||||
return other.is_symbol() && as_symbol() == other.as_symbol();
|
||||
return true;
|
||||
|
|
Loading…
Reference in a new issue