Browse Source

LibJS: Store symbols in a Handle inside PropertyKey

If the stored symbol is custom (non-global), it is allocated on the
heap, and may not be visited by anyone else, so we must register it in
order to keep it alive.
Idan Horowitz 2 years ago
parent
commit
5c814e66b3
1 changed files with 2 additions and 1 deletions
  1. 2 1
      Userland/Libraries/LibJS/Runtime/PropertyKey.h

+ 2 - 1
Userland/Libraries/LibJS/Runtime/PropertyKey.h

@@ -7,6 +7,7 @@
 #pragma once
 
 #include <AK/FlyString.h>
+#include <LibJS/Heap/Handle.h>
 #include <LibJS/Runtime/Completion.h>
 #include <LibJS/Runtime/StringOrSymbol.h>
 
@@ -186,7 +187,7 @@ private:
     Type m_type { Type::Invalid };
     u32 m_number { 0 };
     FlyString m_string;
-    Symbol* m_symbol { nullptr };
+    Handle<Symbol> m_symbol;
 };
 
 }