+
+ JSString* typeString(TypeofType type) const
+ {
+ switch (type) {
+ case TypeofType::Undefined:
+ return undefinedString();
+ case TypeofType::Boolean:
+ return booleanString();
+ case TypeofType::Number:
+ return numberString();
+ case TypeofType::String:
+ return stringString();
+ case TypeofType::Symbol:
+ return symbolString();
+ case TypeofType::Object:
+ return objectString();
+ case TypeofType::Function:
+ return functionString();
+ }
+
+ RELEASE_ASSERT_NOT_REACHED();
+ return nullptr;
+ }
+
+ JSString* nullObjectString() const { return m_nullObjectString; }
+ JSString* undefinedObjectString() const { return m_undefinedObjectString; }
+
+ bool needsToBeVisited(HeapOperation collectionType) const
+ {
+ if (collectionType == FullCollection)
+ return true;
+ return m_needsToBeVisited;
+ }