Bug 1311212 - Add dead CPOW debugging facility (r=mrbkap)

This commit is contained in:
Bill McCloskey
2016-10-18 15:58:33 -07:00
parent ee69fe3289
commit 1deceb4b29
13 changed files with 155 additions and 29 deletions

View File

@@ -26,10 +26,17 @@ UpdateChildWeakPointersBeforeSweepingZoneGroup(JSContext* cx, void* data)
static_cast<JavaScriptChild*>(data)->updateWeakPointers();
}
static void
TraceChild(JSTracer* trc, void* data)
{
static_cast<JavaScriptChild*>(data)->trace(trc);
}
JavaScriptChild::~JavaScriptChild()
{
JSContext* cx = dom::danger::GetJSContext();
JS_RemoveWeakPointerZoneGroupCallback(cx, UpdateChildWeakPointersBeforeSweepingZoneGroup);
JS_RemoveExtraGCRootsTracer(cx, TraceChild, this);
}
bool
@@ -42,9 +49,16 @@ JavaScriptChild::init()
JSContext* cx = dom::danger::GetJSContext();
JS_AddWeakPointerZoneGroupCallback(cx, UpdateChildWeakPointersBeforeSweepingZoneGroup, this);
JS_AddExtraGCRootsTracer(cx, TraceChild, this);
return true;
}
void
JavaScriptChild::trace(JSTracer* trc)
{
objects_.trace(trc, strongReferenceObjIdMinimum_);
}
void
JavaScriptChild::updateWeakPointers()
{
@@ -61,6 +75,13 @@ JavaScriptChild::scopeForTargetObjects()
return xpc::PrivilegedJunkScope();
}
bool
JavaScriptChild::RecvDropTemporaryStrongReferences(const uint64_t& upToObjId)
{
strongReferenceObjIdMinimum_ = upToObjId + 1;
return true;
}
PJavaScriptChild*
mozilla::jsipc::NewJavaScriptChild()
{