本文整理汇总了C++中SlotVisitor::appendUnbarriered方法的典型用法代码示例。如果您正苦于以下问题:C++ SlotVisitor::appendUnbarriered方法的具体用法?C++ SlotVisitor::appendUnbarriered怎么用?C++ SlotVisitor::appendUnbarriered使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SlotVisitor
的用法示例。
在下文中一共展示了SlotVisitor::appendUnbarriered方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: visit
void TypeProfilerLog::visit(SlotVisitor& visitor)
{
for (LogEntry* entry = m_logStartPtr; entry != m_currentLogEntryPtr; ++entry) {
visitor.appendUnbarriered(entry->value);
if (StructureID id = entry->structureID) {
Structure* structure = visitor.heap()->structureIDTable().get(id);
visitor.appendUnbarriered(structure);
}
}
}
示例2: visitStrongHandles
void HandleSet::visitStrongHandles(SlotVisitor& visitor)
{
Node* end = m_strongList.end();
for (Node* node = m_strongList.begin(); node != end; node = node->next()) {
#if ENABLE(GC_VALIDATION)
RELEASE_ASSERT(isLiveNode(node));
#endif
visitor.appendUnbarriered(*node->slot());
}
}
示例3: checkLivenessAndVisitChildren
void Plan::checkLivenessAndVisitChildren(SlotVisitor& visitor)
{
if (!isKnownToBeLiveDuringGC())
return;
cleanMustHandleValuesIfNecessary();
for (unsigned i = mustHandleValues.size(); i--;)
visitor.appendUnbarriered(mustHandleValues[i]);
visitor.appendUnbarriered(codeBlock);
visitor.appendUnbarriered(codeBlock->alternative());
visitor.appendUnbarriered(profiledDFGCodeBlock);
if (inlineCallFrames) {
for (auto* inlineCallFrame : *inlineCallFrames) {
ASSERT(inlineCallFrame->baselineCodeBlock.get());
visitor.appendUnbarriered(inlineCallFrame->baselineCodeBlock.get());
}
}
weakReferences.visitChildren(visitor);
transitions.visitChildren(visitor);
}
示例4: specializedVisit
void WeakBlock::specializedVisit(ContainerType& container, SlotVisitor& visitor)
{
HeapVersion markingVersion = visitor.markingVersion();
size_t count = weakImplCount();
for (size_t i = 0; i < count; ++i) {
WeakImpl* weakImpl = &weakImpls()[i];
if (weakImpl->state() != WeakImpl::Live)
continue;
WeakHandleOwner* weakHandleOwner = weakImpl->weakHandleOwner();
if (!weakHandleOwner)
continue;
JSValue jsValue = weakImpl->jsValue();
if (container.isMarkedConcurrently(markingVersion, jsValue.asCell()))
continue;
if (!weakHandleOwner->isReachableFromOpaqueRoots(Handle<Unknown>::wrapSlot(&const_cast<JSValue&>(jsValue)), weakImpl->context(), visitor))
continue;
visitor.appendUnbarriered(jsValue);
}
}
示例5: visitChildren
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.appendUnbarriered(callee);
if (callee != Packet::throwMarker())
visitor.appendUnbarriered(m_log[i].scope);
if (callee == Packet::tailMarker()) {
visitor.appendUnbarriered(m_log[i].thisValue);
visitor.appendUnbarriered(m_log[i].codeBlock);
}
}
for (unsigned i = m_stack.size(); i--; ) {
Frame& frame = m_stack[i];
visitor.appendUnbarriered(frame.thisValue);
visitor.appendUnbarriered(frame.callee);
if (frame.scope)
visitor.appendUnbarriered(frame.scope);
if (frame.codeBlock)
visitor.appendUnbarriered(frame.codeBlock);
}
}