зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1235598 - Part 2: Use TraceEdge exclusively in Gecko; r=smaug
--HG-- extra : rebase_source : 27afd7eecd5a13f8d28b888b64d5e44b3c4a74a5
This commit is contained in:
Родитель
14bc095b59
Коммит
bb224242a8
|
@ -334,9 +334,7 @@ class ProtoAndIfaceCache
|
||||||
|
|
||||||
void Trace(JSTracer* aTracer) {
|
void Trace(JSTracer* aTracer) {
|
||||||
for (size_t i = 0; i < ArrayLength(*this); ++i) {
|
for (size_t i = 0; i < ArrayLength(*this); ++i) {
|
||||||
if ((*this)[i]) {
|
JS::TraceNullableEdge(aTracer, &(*this)[i], "protoAndIfaceCache[i]");
|
||||||
JS_CallObjectTracer(aTracer, &(*this)[i], "protoAndIfaceCache[i]");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -395,9 +393,7 @@ class ProtoAndIfaceCache
|
||||||
Page* p = mPages[i];
|
Page* p = mPages[i];
|
||||||
if (p) {
|
if (p) {
|
||||||
for (size_t j = 0; j < ArrayLength(*p); ++j) {
|
for (size_t j = 0; j < ArrayLength(*p); ++j) {
|
||||||
if ((*p)[j]) {
|
JS::TraceNullableEdge(trc, &(*p)[j], "protoAndIfaceCache[i]");
|
||||||
JS_CallObjectTracer(trc, &(*p)[j], "protoAndIfaceCache[i]");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -288,9 +288,7 @@ TraceJSObjWrappers(JSTracer *trc, void *data)
|
||||||
nsJSObjWrapperKey key = e.front().key();
|
nsJSObjWrapperKey key = e.front().key();
|
||||||
JS_CallUnbarrieredObjectTracer(trc, &key.mJSObj, "sJSObjWrappers key object");
|
JS_CallUnbarrieredObjectTracer(trc, &key.mJSObj, "sJSObjWrappers key object");
|
||||||
nsJSObjWrapper *wrapper = e.front().value();
|
nsJSObjWrapper *wrapper = e.front().value();
|
||||||
if (wrapper->mJSObj) {
|
JS::TraceNullableEdge(trc, &wrapper->mJSObj, "sJSObjWrappers wrapper object");
|
||||||
JS_CallObjectTracer(trc, &wrapper->mJSObj, "sJSObjWrappers wrapper object");
|
|
||||||
}
|
|
||||||
if (key != e.front().key()) {
|
if (key != e.front().key()) {
|
||||||
e.rekeyFront(key);
|
e.rekeyFront(key);
|
||||||
}
|
}
|
||||||
|
@ -2260,21 +2258,16 @@ NPObjectMember_Trace(JSTracer *trc, JSObject *obj)
|
||||||
if (!memberPrivate)
|
if (!memberPrivate)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Our NPIdentifier is not always interned, so we must root it explicitly.
|
// Our NPIdentifier is not always interned, so we must trace it.
|
||||||
JS_CallIdTracer(trc, &memberPrivate->methodName, "NPObjectMemberPrivate.methodName");
|
JS::TraceEdge(trc, &memberPrivate->methodName, "NPObjectMemberPrivate.methodName");
|
||||||
|
|
||||||
if (!memberPrivate->fieldValue.isPrimitive()) {
|
JS::TraceEdge(trc, &memberPrivate->fieldValue, "NPObject Member => fieldValue");
|
||||||
JS_CallValueTracer(trc, &memberPrivate->fieldValue,
|
|
||||||
"NPObject Member => fieldValue");
|
|
||||||
}
|
|
||||||
|
|
||||||
// There's no strong reference from our private data to the
|
// There's no strong reference from our private data to the
|
||||||
// NPObject, so make sure to mark the NPObject wrapper to keep the
|
// NPObject, so make sure to mark the NPObject wrapper to keep the
|
||||||
// NPObject alive as long as this NPObjectMember is alive.
|
// NPObject alive as long as this NPObjectMember is alive.
|
||||||
if (memberPrivate->npobjWrapper) {
|
JS::TraceNullableEdge(trc, &memberPrivate->npobjWrapper,
|
||||||
JS_CallObjectTracer(trc, &memberPrivate->npobjWrapper,
|
|
||||||
"NPObject Member => npobjWrapper");
|
"NPObject Member => npobjWrapper");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
|
|
@ -559,8 +559,8 @@ public:
|
||||||
private:
|
private:
|
||||||
virtual void trace(JSTracer* aTrc)
|
virtual void trace(JSTracer* aTrc)
|
||||||
{
|
{
|
||||||
JS_CallValueTracer(aTrc, &mStateData->mResponse,
|
JS::TraceEdge(aTrc, &mStateData->mResponse,
|
||||||
"XMLHttpRequest::StateData::mResponse");
|
"XMLHttpRequest::StateData::mResponse");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -249,9 +249,7 @@ public:
|
||||||
|
|
||||||
void TraceScriptObject(JSTracer* aTrc)
|
void TraceScriptObject(JSTracer* aTrc)
|
||||||
{
|
{
|
||||||
if (mScriptObject) {
|
JS::TraceNullableEdge(aTrc, &mScriptObject, "active window XUL prototype script");
|
||||||
JS_CallScriptTracer(aTrc, &mScriptObject, "active window XUL prototype script");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Trace(const TraceCallbacks& aCallbacks, void* aClosure)
|
void Trace(const TraceCallbacks& aCallbacks, void* aClosure)
|
||||||
|
|
|
@ -630,7 +630,7 @@ static PLDHashOperator
|
||||||
MarkScriptsInGC(nsIURI* aKey, JS::Heap<JSScript*>& aScript, void* aClosure)
|
MarkScriptsInGC(nsIURI* aKey, JS::Heap<JSScript*>& aScript, void* aClosure)
|
||||||
{
|
{
|
||||||
JSTracer* trc = static_cast<JSTracer*>(aClosure);
|
JSTracer* trc = static_cast<JSTracer*>(aClosure);
|
||||||
JS_CallScriptTracer(trc, &aScript, "nsXULPrototypeCache script");
|
JS::TraceEdge(trc, &aScript, "nsXULPrototypeCache script");
|
||||||
return PL_DHASH_NEXT;
|
return PL_DHASH_NEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,10 +35,8 @@ IdToObjectMap::init()
|
||||||
void
|
void
|
||||||
IdToObjectMap::trace(JSTracer* trc)
|
IdToObjectMap::trace(JSTracer* trc)
|
||||||
{
|
{
|
||||||
for (Table::Range r(table_.all()); !r.empty(); r.popFront()) {
|
for (Table::Range r(table_.all()); !r.empty(); r.popFront())
|
||||||
DebugOnly<JSObject*> prior = r.front().value().get();
|
JS::TraceEdge(trc, &r.front().value(), "ipc-object");
|
||||||
JS_CallObjectTracer(trc, &r.front().value(), "ipc-object");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -66,7 +66,7 @@ XPCTraceableVariant::~XPCTraceableVariant()
|
||||||
void XPCTraceableVariant::TraceJS(JSTracer* trc)
|
void XPCTraceableVariant::TraceJS(JSTracer* trc)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(mJSVal.isMarkable());
|
MOZ_ASSERT(mJSVal.isMarkable());
|
||||||
JS_CallValueTracer(trc, &mJSVal, "XPCTraceableVariant::mJSVal");
|
JS::TraceEdge(trc, &mJSVal, "XPCTraceableVariant::mJSVal");
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_CLASS(XPCVariant)
|
NS_IMPL_CYCLE_COLLECTION_CLASS(XPCVariant)
|
||||||
|
|
|
@ -291,7 +291,7 @@ void
|
||||||
nsXPCWrappedJS::TraceJS(JSTracer* trc)
|
nsXPCWrappedJS::TraceJS(JSTracer* trc)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(mRefCnt >= 2 && IsValid(), "must be strongly referenced");
|
MOZ_ASSERT(mRefCnt >= 2 && IsValid(), "must be strongly referenced");
|
||||||
JS_CallObjectTracer(trc, &mJSObj, "nsXPCWrappedJS::mJSObj");
|
JS::TraceEdge(trc, &mJSObj, "nsXPCWrappedJS::mJSObj");
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
|
|
|
@ -2360,5 +2360,5 @@ XPCJSObjectHolder::~XPCJSObjectHolder()
|
||||||
void
|
void
|
||||||
XPCJSObjectHolder::TraceJS(JSTracer* trc)
|
XPCJSObjectHolder::TraceJS(JSTracer* trc)
|
||||||
{
|
{
|
||||||
JS_CallObjectTracer(trc, &mJSObj, "XPCJSObjectHolder::mJSObj");
|
JS::TraceEdge(trc, &mJSObj, "XPCJSObjectHolder::mJSObj");
|
||||||
}
|
}
|
||||||
|
|
|
@ -467,7 +467,7 @@ XPCWrappedNativeScope::~XPCWrappedNativeScope()
|
||||||
void
|
void
|
||||||
XPCWrappedNativeScope::TraceWrappedNativesInAllScopes(JSTracer* trc, XPCJSRuntime* rt)
|
XPCWrappedNativeScope::TraceWrappedNativesInAllScopes(JSTracer* trc, XPCJSRuntime* rt)
|
||||||
{
|
{
|
||||||
// Do JS_CallTracer for all wrapped natives with external references, as
|
// Do JS::TraceEdge for all wrapped natives with external references, as
|
||||||
// well as any DOM expando objects.
|
// well as any DOM expando objects.
|
||||||
for (XPCWrappedNativeScope* cur = gScopes; cur; cur = cur->mNext) {
|
for (XPCWrappedNativeScope* cur = gScopes; cur; cur = cur->mNext) {
|
||||||
for (auto i = cur->mWrappedNativeMap->Iter(); !i.Done(); i.Next()) {
|
for (auto i = cur->mWrappedNativeMap->Iter(); !i.Done(); i.Next()) {
|
||||||
|
@ -479,7 +479,7 @@ XPCWrappedNativeScope::TraceWrappedNativesInAllScopes(JSTracer* trc, XPCJSRuntim
|
||||||
|
|
||||||
if (cur->mDOMExpandoSet) {
|
if (cur->mDOMExpandoSet) {
|
||||||
for (DOMExpandoSet::Enum e(*cur->mDOMExpandoSet); !e.empty(); e.popFront())
|
for (DOMExpandoSet::Enum e(*cur->mDOMExpandoSet); !e.empty(); e.popFront())
|
||||||
JS_CallObjectTracer(trc, &e.mutableFront(), "DOM expando object");
|
JS::TraceEdge(trc, &e.mutableFront(), "DOM expando object");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -781,17 +781,17 @@ struct JsGcTracer : public TraceCallbacks
|
||||||
virtual void Trace(JS::Heap<JS::Value>* aPtr, const char* aName,
|
virtual void Trace(JS::Heap<JS::Value>* aPtr, const char* aName,
|
||||||
void* aClosure) const override
|
void* aClosure) const override
|
||||||
{
|
{
|
||||||
JS_CallValueTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
JS::TraceEdge(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||||
}
|
}
|
||||||
virtual void Trace(JS::Heap<jsid>* aPtr, const char* aName,
|
virtual void Trace(JS::Heap<jsid>* aPtr, const char* aName,
|
||||||
void* aClosure) const override
|
void* aClosure) const override
|
||||||
{
|
{
|
||||||
JS_CallIdTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
JS::TraceEdge(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||||
}
|
}
|
||||||
virtual void Trace(JS::Heap<JSObject*>* aPtr, const char* aName,
|
virtual void Trace(JS::Heap<JSObject*>* aPtr, const char* aName,
|
||||||
void* aClosure) const override
|
void* aClosure) const override
|
||||||
{
|
{
|
||||||
JS_CallObjectTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
JS::TraceEdge(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||||
}
|
}
|
||||||
virtual void Trace(JSObject** aPtr, const char* aName,
|
virtual void Trace(JSObject** aPtr, const char* aName,
|
||||||
void* aClosure) const override
|
void* aClosure) const override
|
||||||
|
@ -806,17 +806,17 @@ struct JsGcTracer : public TraceCallbacks
|
||||||
virtual void Trace(JS::Heap<JSString*>* aPtr, const char* aName,
|
virtual void Trace(JS::Heap<JSString*>* aPtr, const char* aName,
|
||||||
void* aClosure) const override
|
void* aClosure) const override
|
||||||
{
|
{
|
||||||
JS_CallStringTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
JS::TraceEdge(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||||
}
|
}
|
||||||
virtual void Trace(JS::Heap<JSScript*>* aPtr, const char* aName,
|
virtual void Trace(JS::Heap<JSScript*>* aPtr, const char* aName,
|
||||||
void* aClosure) const override
|
void* aClosure) const override
|
||||||
{
|
{
|
||||||
JS_CallScriptTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
JS::TraceEdge(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||||
}
|
}
|
||||||
virtual void Trace(JS::Heap<JSFunction*>* aPtr, const char* aName,
|
virtual void Trace(JS::Heap<JSFunction*>* aPtr, const char* aName,
|
||||||
void* aClosure) const override
|
void* aClosure) const override
|
||||||
{
|
{
|
||||||
JS_CallFunctionTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
JS::TraceEdge(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ TraceArray(JSTracer* trc, void* data)
|
||||||
{
|
{
|
||||||
ArrayT* array = static_cast<ArrayT *>(data);
|
ArrayT* array = static_cast<ArrayT *>(data);
|
||||||
for (unsigned i = 0; i < array->Length(); ++i)
|
for (unsigned i = 0; i < array->Length(); ++i)
|
||||||
JS_CallObjectTracer(trc, &array->ElementAt(i), "array-element");
|
JS::TraceEdge(trc, &array->ElementAt(i), "array-element");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче