Ver Fonte

LibJS: Use enumerator macro to mark all constructors in GlobalObject

We were forgetting to mark the String constructor! So this patch fixes
that and ensures we won't forget anyone in the future.
Andreas Kling há 5 anos atrás
pai
commit
30de1f610d
1 ficheiros alterados com 4 adições e 7 exclusões
  1. 4 7
      Libraries/LibJS/Runtime/GlobalObject.cpp

+ 4 - 7
Libraries/LibJS/Runtime/GlobalObject.cpp

@@ -90,13 +90,10 @@ void GlobalObject::visit_children(Visitor& visitor)
 {
 {
     Object::visit_children(visitor);
     Object::visit_children(visitor);
 
 
-    visitor.visit(m_array_constructor);
-    visitor.visit(m_boolean_constructor);
-    visitor.visit(m_date_constructor);
-    visitor.visit(m_error_constructor);
-    visitor.visit(m_function_constructor);
-    visitor.visit(m_number_constructor);
-    visitor.visit(m_object_constructor);
+#define __JS_ENUMERATE(ClassName, snake_name, PrototypeName, ConstructorName) \
+    visitor.visit(m_##snake_name##_constructor);
+    JS_ENUMERATE_ERROR_SUBCLASSES
+#undef __JS_ENUMERATE
 }
 }
 
 
 Value GlobalObject::gc(Interpreter& interpreter)
 Value GlobalObject::gc(Interpreter& interpreter)