mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out changeset 81bec89d093b (bug 1107775) for Valgrind and other test failures
This commit is contained in:
parent
4ccd862efa
commit
dc68aac5c9
@ -57,7 +57,6 @@
|
|||||||
#include "mozilla/CycleCollectedJSRuntime.h"
|
#include "mozilla/CycleCollectedJSRuntime.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include "mozilla/ArrayUtils.h"
|
#include "mozilla/ArrayUtils.h"
|
||||||
#include "mozilla/AutoRestore.h"
|
|
||||||
#include "mozilla/MemoryReporting.h"
|
#include "mozilla/MemoryReporting.h"
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
#include "mozilla/dom/BindingUtils.h"
|
||||||
#include "mozilla/dom/DOMJSClass.h"
|
#include "mozilla/dom/DOMJSClass.h"
|
||||||
@ -97,7 +96,6 @@ class IncrementalFinalizeRunnable : public nsRunnable
|
|||||||
nsTArray<nsISupports*> mSupports;
|
nsTArray<nsISupports*> mSupports;
|
||||||
DeferredFinalizeArray mDeferredFinalizeFunctions;
|
DeferredFinalizeArray mDeferredFinalizeFunctions;
|
||||||
uint32_t mFinalizeFunctionToRun;
|
uint32_t mFinalizeFunctionToRun;
|
||||||
bool mReleasing;
|
|
||||||
|
|
||||||
static const PRTime SliceMillis = 10; /* ms */
|
static const PRTime SliceMillis = 10; /* ms */
|
||||||
|
|
||||||
@ -1126,7 +1124,6 @@ IncrementalFinalizeRunnable::IncrementalFinalizeRunnable(CycleCollectedJSRuntime
|
|||||||
DeferredFinalizerTable& aFinalizers)
|
DeferredFinalizerTable& aFinalizers)
|
||||||
: mRuntime(aRt)
|
: mRuntime(aRt)
|
||||||
, mFinalizeFunctionToRun(0)
|
, mFinalizeFunctionToRun(0)
|
||||||
, mReleasing(false)
|
|
||||||
{
|
{
|
||||||
this->mSupports.SwapElements(aSupports);
|
this->mSupports.SwapElements(aSupports);
|
||||||
DeferredFinalizeFunctionHolder* function =
|
DeferredFinalizeFunctionHolder* function =
|
||||||
@ -1146,12 +1143,7 @@ IncrementalFinalizeRunnable::~IncrementalFinalizeRunnable()
|
|||||||
void
|
void
|
||||||
IncrementalFinalizeRunnable::ReleaseNow(bool aLimited)
|
IncrementalFinalizeRunnable::ReleaseNow(bool aLimited)
|
||||||
{
|
{
|
||||||
if (mReleasing) {
|
//MOZ_ASSERT(NS_IsMainThread());
|
||||||
MOZ_ASSERT(false, "Try to avoid re-entering ReleaseNow!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mozilla::AutoRestore<bool> ar(mReleasing);
|
|
||||||
mReleasing = true;
|
|
||||||
MOZ_ASSERT(mDeferredFinalizeFunctions.Length() != 0,
|
MOZ_ASSERT(mDeferredFinalizeFunctions.Length() != 0,
|
||||||
"We should have at least ReleaseSliceNow to run");
|
"We should have at least ReleaseSliceNow to run");
|
||||||
MOZ_ASSERT(mFinalizeFunctionToRun < mDeferredFinalizeFunctions.Length(),
|
MOZ_ASSERT(mFinalizeFunctionToRun < mDeferredFinalizeFunctions.Length(),
|
||||||
@ -1218,21 +1210,7 @@ IncrementalFinalizeRunnable::Run()
|
|||||||
void
|
void
|
||||||
CycleCollectedJSRuntime::FinalizeDeferredThings(DeferredFinalizeType aType)
|
CycleCollectedJSRuntime::FinalizeDeferredThings(DeferredFinalizeType aType)
|
||||||
{
|
{
|
||||||
/*
|
MOZ_ASSERT(!mFinalizeRunnable);
|
||||||
* If the previous GC created a runnable to finalize objects
|
|
||||||
* incrementally, and if it hasn't finished yet, finish it now. We
|
|
||||||
* don't want these to build up. We also don't want to allow any
|
|
||||||
* existing incremental finalize runnables to run after a
|
|
||||||
* non-incremental GC, since they are often used to detect leaks.
|
|
||||||
*/
|
|
||||||
if (mFinalizeRunnable) {
|
|
||||||
mFinalizeRunnable->ReleaseNow(false);
|
|
||||||
if (mFinalizeRunnable) {
|
|
||||||
// If we re-entered ReleaseNow, we couldn't delete mFinalizeRunnable and
|
|
||||||
// we need to just continue processing it.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mFinalizeRunnable = new IncrementalFinalizeRunnable(this,
|
mFinalizeRunnable = new IncrementalFinalizeRunnable(this,
|
||||||
mDeferredSupports,
|
mDeferredSupports,
|
||||||
mDeferredFinalizerTable);
|
mDeferredFinalizerTable);
|
||||||
@ -1283,6 +1261,17 @@ CycleCollectedJSRuntime::OnGC(JSGCStatus aStatus)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the previous GC created a runnable to finalize objects
|
||||||
|
* incrementally, and if it hasn't finished yet, finish it now. We
|
||||||
|
* don't want these to build up. We also don't want to allow any
|
||||||
|
* existing incremental finalize runnables to run after a
|
||||||
|
* non-incremental GC, since they are often used to detect leaks.
|
||||||
|
*/
|
||||||
|
if (mFinalizeRunnable) {
|
||||||
|
mFinalizeRunnable->ReleaseNow(false);
|
||||||
|
}
|
||||||
|
|
||||||
// Do any deferred finalization of native objects.
|
// Do any deferred finalization of native objects.
|
||||||
FinalizeDeferredThings(JS::WasIncrementalGC(mJSRuntime) ? FinalizeIncrementally :
|
FinalizeDeferredThings(JS::WasIncrementalGC(mJSRuntime) ? FinalizeIncrementally :
|
||||||
FinalizeNow);
|
FinalizeNow);
|
||||||
|
Loading…
Reference in New Issue
Block a user