Sfoglia il codice sorgente

LibJS: Add StringOrSymbol constructor that takes a FlyString

This avoids refcount churn from implicit conversion in some places.
Andreas Kling 4 anni fa
parent
commit
d01b746d88
1 ha cambiato i file con 8 aggiunte e 0 eliminazioni
  1. 8 0
      Libraries/LibJS/Runtime/StringOrSymbol.h

+ 8 - 0
Libraries/LibJS/Runtime/StringOrSymbol.h

@@ -26,6 +26,7 @@
 
 #pragma once
 
+#include <AK/FlyString.h>
 #include <LibJS/Runtime/PrimitiveString.h>
 #include <LibJS/Runtime/Symbol.h>
 #include <LibJS/Runtime/Value.h>
@@ -58,6 +59,13 @@ public:
         static_cast<const StringImpl*>(m_ptr)->ref();
     }
 
+    StringOrSymbol(const FlyString& string)
+        : m_ptr(string.impl())
+    {
+        ASSERT(!string.is_null());
+        static_cast<const StringImpl*>(m_ptr)->ref();
+    }
+
     ~StringOrSymbol()
     {
         if (is_string())