void Safepoint::checkLivenessAndVisitChildren(SlotVisitor& visitor) { RELEASE_ASSERT(m_didCallBegin); if (m_result.m_didGetCancelled) return; // We were cancelled during a previous GC! if (!isKnownToBeLiveDuringGC()) return; for (unsigned i = m_scannables.size(); i--;) m_scannables[i]->visitChildren(visitor); }
void Plan::checkLivenessAndVisitChildren(SlotVisitor& visitor) { if (!isKnownToBeLiveDuringGC()) return; for (unsigned i = mustHandleValues.size(); i--;) visitor.appendUnbarrieredValue(&mustHandleValues[i]); visitor.appendUnbarrieredReadOnlyPointer(codeBlock); visitor.appendUnbarrieredReadOnlyPointer(profiledDFGCodeBlock); if (inlineCallFrames) { for (auto* inlineCallFrame : *inlineCallFrames) { ASSERT(inlineCallFrame->baselineCodeBlock.get()); visitor.appendUnbarrieredReadOnlyPointer(inlineCallFrame->baselineCodeBlock.get()); } } weakReferences.visitChildren(visitor); transitions.visitChildren(visitor); }