void JSInterfaceName::visitChildren(JSCell* cell, SlotVisitor& visitor) { auto* thisObject = jsCast<JSInterfaceName*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.reportExtraMemoryVisited(thisObject->wrapped().memoryCost()); }
void JSString::visitChildren(JSCell* cell, SlotVisitor& visitor) { JSString* thisObject = asString(cell); Base::visitChildren(thisObject, visitor); if (thisObject->isRope()) static_cast<JSRopeString*>(thisObject)->visitFibers(visitor); if (StringImpl* impl = thisObject->m_value.impl()) visitor.reportExtraMemoryVisited(impl->costDuringGC()); }
void UnlinkedCodeBlock::visitChildren(JSCell* cell, SlotVisitor& visitor) { UnlinkedCodeBlock* thisObject = jsCast<UnlinkedCodeBlock*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); for (FunctionExpressionVector::iterator ptr = thisObject->m_functionDecls.begin(), end = thisObject->m_functionDecls.end(); ptr != end; ++ptr) visitor.append(ptr); for (FunctionExpressionVector::iterator ptr = thisObject->m_functionExprs.begin(), end = thisObject->m_functionExprs.end(); ptr != end; ++ptr) visitor.append(ptr); visitor.appendValues(thisObject->m_constantRegisters.data(), thisObject->m_constantRegisters.size()); if (thisObject->m_unlinkedInstructions) visitor.reportExtraMemoryVisited(thisObject->m_unlinkedInstructions->sizeInBytes()); if (thisObject->m_rareData) { for (size_t i = 0, end = thisObject->m_rareData->m_regexps.size(); i != end; i++) visitor.append(&thisObject->m_rareData->m_regexps[i]); } }