void ShadowChicken::visitChildren(SlotVisitor& visitor) { for (unsigned i = m_logCursor - m_log; i--;) { JSObject* callee = m_log[i].callee; if (callee != Packet::tailMarker() && callee != Packet::throwMarker()) visitor.appendUnbarrieredReadOnlyPointer(callee); } for (Frame& frame : m_stack) visitor.appendUnbarrieredReadOnlyPointer(frame.callee); }
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); }
void SamplingProfiler::visit(SlotVisitor& slotVisitor) { RELEASE_ASSERT(m_lock.isLocked()); for (ExecutableBase* executable : m_seenExecutables) slotVisitor.appendUnbarrieredReadOnlyPointer(executable); }