本文整理汇总了C++中v8::Persistent::MakeWeak方法的典型用法代码示例。如果您正苦于以下问题:C++ Persistent::MakeWeak方法的具体用法?C++ Persistent::MakeWeak怎么用?C++ Persistent::MakeWeak使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类v8::Persistent
的用法示例。
在下文中一共展示了Persistent::MakeWeak方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: process
static bool process(void* object, v8::Persistent<v8::Object> wrapper, WrapperTypeInfo* typeInfo)
{
if (V8MessagePort::info.equals(typeInfo)) {
MessagePort* port1 = static_cast<MessagePort*>(object);
// We marked this port as reachable in GCPrologueVisitor. Undo this now since the
// port could be not reachable in the future if it gets disentangled (and also
// GCPrologueVisitor expects to see all handles marked as weak).
if ((!wrapper.IsWeak() && !wrapper.IsNearDeath()) || port1->hasPendingActivity())
wrapper.MakeWeak(port1, &DOMDataStore::weakActiveDOMObjectCallback);
return true;
}
return false;
}
示例2: visitDOMWrapper
void visitDOMWrapper(DOMDataStore* store, void* object, v8::Persistent<v8::Object> wrapper)
{
WrapperTypeInfo* typeInfo = V8DOMWrapper::domWrapperType(wrapper);
if (V8MessagePort::info.equals(typeInfo)) {
MessagePort* port1 = static_cast<MessagePort*>(object);
// We marked this port as reachable in GCPrologueVisitor. Undo this now since the
// port could be not reachable in the future if it gets disentangled (and also
// GCPrologueVisitor expects to see all handles marked as weak).
if ((!wrapper.IsWeak() && !wrapper.IsNearDeath()) || port1->hasPendingActivity())
wrapper.MakeWeak(port1, &DOMDataStore::weakActiveDOMObjectCallback);
} else {
ActiveDOMObject* activeDOMObject = typeInfo->toActiveDOMObject(wrapper);
if (activeDOMObject && activeDOMObject->hasPendingActivity()) {
ASSERT(!wrapper.IsWeak());
// NOTE: To re-enable weak status of the active object we use
// |object| from the map and not |activeDOMObject|. The latter
// may be a different pointer (in case ActiveDOMObject is not
// the main base class of the object's class) and pointer
// identity is required by DOM map functions.
wrapper.MakeWeak(object, &DOMDataStore::weakActiveDOMObjectCallback);
}
}
}
示例3: visitDOMWrapper
void visitDOMWrapper(DOMDataStore* store, T* object, v8::Persistent<v8::Object> wrapper)
{
WrapperTypeInfo* typeInfo = V8DOMWrapper::domWrapperType(wrapper);
if (!S::process(object, wrapper, typeInfo)) {
ActiveDOMObject* activeDOMObject = typeInfo->toActiveDOMObject(wrapper);
if (activeDOMObject && activeDOMObject->hasPendingActivity()) {
ASSERT(!wrapper.IsWeak());
// NOTE: To re-enable weak status of the active object we use
// |object| from the map and not |activeDOMObject|. The latter
// may be a different pointer (in case ActiveDOMObject is not
// the main base class of the object's class) and pointer
// identity is required by DOM map functions.
wrapper.MakeWeak(object, callback);
}
}
}
示例4: set
void set(PrivateIdentifier* key, v8::Persistent<v8::FunctionTemplate> wrapper)
{
ASSERT(!m_map.contains(key));
m_map.set(key, wrapper);
wrapper.MakeWeak(key, weakCallback);
}