Просмотр исходного кода

LibJS: Use String and move semantics in Bytecode::StringTable

Avoid creating new AK::String objects when we already have one.
Andreas Kling 3 лет назад
Родитель
Сommit
13f04e37e5

+ 2 - 2
Userland/Libraries/LibJS/Bytecode/Generator.h

@@ -97,9 +97,9 @@ public:
         return m_current_basic_block->is_terminated();
     }
 
-    StringTableIndex intern_string(StringView const& string)
+    StringTableIndex intern_string(String string)
     {
-        return m_string_table->insert(string);
+        return m_string_table->insert(move(string));
     }
 
     bool is_in_generator_function() const { return m_is_in_generator_function; }

+ 2 - 2
Userland/Libraries/LibJS/Bytecode/StringTable.cpp

@@ -8,13 +8,13 @@
 
 namespace JS::Bytecode {
 
-StringTableIndex StringTable::insert(StringView string)
+StringTableIndex StringTable::insert(String string)
 {
     for (size_t i = 0; i < m_strings.size(); i++) {
         if (m_strings[i] == string)
             return i;
     }
-    m_strings.append(string);
+    m_strings.append(move(string));
     return m_strings.size() - 1;
 }
 

+ 1 - 1
Userland/Libraries/LibJS/Bytecode/StringTable.h

@@ -21,7 +21,7 @@ class StringTable {
 public:
     StringTable() = default;
 
-    StringTableIndex insert(StringView string);
+    StringTableIndex insert(String);
     String const& get(StringTableIndex) const;
     void dump() const;
     bool is_empty() const { return m_strings.is_empty(); }