void StringData::sweepAll() { SweepNode& head = MemoryManager::TheMemoryManager()->m_strings; for (SweepNode *next, *n = head.next; n != &head; n = next) { next = n->next; assert(next && uintptr_t(next) != kSmartFreeWord); assert(next && uintptr_t(next) != kMallocFreeWord); StringData* s = (StringData*)(uintptr_t(n) - offsetof(StringData, m_big.node)); assert(s->isShared()); s->m_big.shared->decRef(); } head.next = head.prev = &head; }