- JSNameScope* thisObject = jsCast<JSNameScope*>(cell);
- ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info);
- COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
- ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());
-
- Base::visitChildren(thisObject, visitor);
- visitor.append(&thisObject->m_registerStore);
+ switch (type) {
+ case CatchScope:
+ return JSCatchScope::create(vm, globalObject, currentScope, symbolTable, value);
+ case FunctionNameScope:
+ return JSFunctionNameScope::create(vm, globalObject, currentScope, symbolTable, value);
+ }
+ RELEASE_ASSERT_NOT_REACHED();
+ return nullptr;