本文整理汇总了C++中ProxyObject::slotOfPrivate方法的典型用法代码示例。如果您正苦于以下问题:C++ ProxyObject::slotOfPrivate方法的具体用法?C++ ProxyObject::slotOfPrivate怎么用?C++ ProxyObject::slotOfPrivate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProxyObject
的用法示例。
在下文中一共展示了ProxyObject::slotOfPrivate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MarkValue
/*
* This method marks pointers that cross compartment boundaries. It is called in
* per-zone GCs (since full GCs naturally follow pointers across compartments)
* and when compacting to update cross-compartment pointers.
*/
void
JSCompartment::markCrossCompartmentWrappers(JSTracer *trc)
{
MOZ_ASSERT(!zone()->isCollecting() || trc->runtime()->isHeapCompacting());
for (WrapperMap::Enum e(crossCompartmentWrappers); !e.empty(); e.popFront()) {
Value v = e.front().value();
if (e.front().key().kind == CrossCompartmentKey::ObjectWrapper) {
ProxyObject *wrapper = &v.toObject().as<ProxyObject>();
/*
* We have a cross-compartment wrapper. Its private pointer may
* point into the compartment being collected, so we should mark it.
*/
MarkValue(trc, wrapper->slotOfPrivate(), "cross-compartment wrapper");
}
}
}
示例2: TraceEdge
void
JSCompartment::traceOutgoingCrossCompartmentWrappers(JSTracer* trc)
{
MOZ_ASSERT(trc->runtime()->isHeapMajorCollecting());
MOZ_ASSERT(!zone()->isCollecting() || trc->runtime()->gc.isHeapCompacting());
for (WrapperMap::Enum e(crossCompartmentWrappers); !e.empty(); e.popFront()) {
Value v = e.front().value().unbarrieredGet();
if (e.front().key().is<JSObject*>()) {
ProxyObject* wrapper = &v.toObject().as<ProxyObject>();
/*
* We have a cross-compartment wrapper. Its private pointer may
* point into the compartment being collected, so we should mark it.
*/
TraceEdge(trc, wrapper->slotOfPrivate(), "cross-compartment wrapper");
}
}
}