Backed out changeset 0d55a6e4e98e (bug 1120016) for 980 b2g hazards
This commit is contained in:
@@ -73,7 +73,6 @@
|
||||
#include "nsCycleCollector.h"
|
||||
#include "nsDOMJSUtils.h"
|
||||
#include "nsJSUtils.h"
|
||||
#include "nsWrapperCache.h"
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
#include "nsExceptionHandler.h"
|
||||
@@ -398,12 +397,6 @@ NoteJSChildGrayWrapperShim(void* aData, JS::GCCellPtr aThing)
|
||||
// CycleCollectedJSRuntime. It should never be used directly.
|
||||
static const JSZoneParticipant sJSZoneCycleCollectorGlobal;
|
||||
|
||||
static
|
||||
void JSObjectsTenuredCb(JSRuntime* aRuntime, void* aData)
|
||||
{
|
||||
static_cast<CycleCollectedJSRuntime*>(aData)->JSObjectsTenured(aRuntime);
|
||||
}
|
||||
|
||||
CycleCollectedJSRuntime::CycleCollectedJSRuntime(JSRuntime* aParentRuntime,
|
||||
uint32_t aMaxBytes,
|
||||
uint32_t aMaxNurseryBytes)
|
||||
@@ -437,7 +430,6 @@ CycleCollectedJSRuntime::CycleCollectedJSRuntime(JSRuntime* aParentRuntime,
|
||||
JS_SetGrayGCRootsTracer(mJSRuntime, TraceGrayJS, this);
|
||||
JS_SetGCCallback(mJSRuntime, GCCallback, this);
|
||||
mPrevGCSliceCallback = JS::SetGCSliceCallback(mJSRuntime, GCSliceCallback);
|
||||
JS_SetObjectsTenuredCallback(mJSRuntime, JSObjectsTenuredCb, this);
|
||||
JS::SetOutOfMemoryCallback(mJSRuntime, OutOfMemoryCallback, this);
|
||||
JS::SetLargeAllocationFailureCallback(mJSRuntime,
|
||||
LargeAllocationFailureCallback, this);
|
||||
@@ -793,11 +785,6 @@ struct JsGcTracer : public TraceCallbacks
|
||||
{
|
||||
JS_CallObjectTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||
}
|
||||
virtual void Trace(JSObject** aPtr, const char* aName,
|
||||
void* aClosure) const override
|
||||
{
|
||||
JS_CallUnbarrieredObjectTracer(static_cast<JSTracer*>(aClosure), aPtr, aName);
|
||||
}
|
||||
virtual void Trace(JS::TenuredHeap<JSObject*>* aPtr, const char* aName,
|
||||
void* aClosure) const override
|
||||
{
|
||||
@@ -865,12 +852,6 @@ struct ClearJSHolder : TraceCallbacks
|
||||
*aPtr = nullptr;
|
||||
}
|
||||
|
||||
virtual void Trace(JSObject** aPtr, const char* aName,
|
||||
void* aClosure) const override
|
||||
{
|
||||
*aPtr = nullptr;
|
||||
}
|
||||
|
||||
virtual void Trace(JS::TenuredHeap<JSObject*>* aPtr, const char*, void*) const override
|
||||
{
|
||||
*aPtr = nullptr;
|
||||
@@ -1027,46 +1008,6 @@ CycleCollectedJSRuntime::GarbageCollect(uint32_t aReason) const
|
||||
JS::GCForReason(mJSRuntime, GC_NORMAL, gcreason);
|
||||
}
|
||||
|
||||
void
|
||||
CycleCollectedJSRuntime::JSObjectsTenured(JSRuntime* aRuntime)
|
||||
{
|
||||
for (auto iter = mNurseryObjects.Iter(); !iter.Done(); iter.Next()) {
|
||||
nsWrapperCache* cache = iter.Get();
|
||||
JSObject* wrapper = cache->GetWrapperPreserveColor();
|
||||
MOZ_ASSERT(wrapper);
|
||||
if (!JS::ObjectIsTenured(wrapper)) {
|
||||
MOZ_ASSERT(!cache->PreservingWrapper());
|
||||
const JSClass* jsClass = js::GetObjectJSClass(wrapper);
|
||||
jsClass->finalize(nullptr, wrapper);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
for (auto iter = mPreservedNurseryObjects.Iter(); !iter.Done(); iter.Next()) {
|
||||
MOZ_ASSERT(JS::ObjectIsTenured(iter.Get().get()));
|
||||
}
|
||||
#endif
|
||||
|
||||
mNurseryObjects.Clear();
|
||||
mPreservedNurseryObjects.Clear();
|
||||
}
|
||||
|
||||
void
|
||||
CycleCollectedJSRuntime::NurseryWrapperAdded(nsWrapperCache* aCache)
|
||||
{
|
||||
MOZ_ASSERT(aCache);
|
||||
MOZ_ASSERT(aCache->GetWrapperPreserveColor());
|
||||
MOZ_ASSERT(!JS::ObjectIsTenured(aCache->GetWrapperPreserveColor()));
|
||||
mNurseryObjects.InfallibleAppend(aCache);
|
||||
}
|
||||
|
||||
void
|
||||
CycleCollectedJSRuntime::NurseryWrapperPreserved(JSObject* aWrapper)
|
||||
{
|
||||
mPreservedNurseryObjects.InfallibleAppend(
|
||||
JS::PersistentRooted<JSObject*>(mJSRuntime, aWrapper));
|
||||
}
|
||||
|
||||
void
|
||||
CycleCollectedJSRuntime::DeferredFinalize(DeferredFinalizeAppendFunction aAppendFunc,
|
||||
DeferredFinalizeFunction aFunc,
|
||||
|
||||
Reference in New Issue
Block a user