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 <algorithm>
|
||||
#include "mozilla/ArrayUtils.h"
|
||||
#include "mozilla/AutoRestore.h"
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/dom/BindingUtils.h"
|
||||
#include "mozilla/dom/DOMJSClass.h"
|
||||
@ -97,7 +96,6 @@ class IncrementalFinalizeRunnable : public nsRunnable
|
||||
nsTArray<nsISupports*> mSupports;
|
||||
DeferredFinalizeArray mDeferredFinalizeFunctions;
|
||||
uint32_t mFinalizeFunctionToRun;
|
||||
bool mReleasing;
|
||||
|
||||
static const PRTime SliceMillis = 10; /* ms */
|
||||
|
||||
@ -1126,7 +1124,6 @@ IncrementalFinalizeRunnable::IncrementalFinalizeRunnable(CycleCollectedJSRuntime
|
||||
DeferredFinalizerTable& aFinalizers)
|
||||
: mRuntime(aRt)
|
||||
, mFinalizeFunctionToRun(0)
|
||||
, mReleasing(false)
|
||||
{
|
||||
this->mSupports.SwapElements(aSupports);
|
||||
DeferredFinalizeFunctionHolder* function =
|
||||
@ -1146,12 +1143,7 @@ IncrementalFinalizeRunnable::~IncrementalFinalizeRunnable()
|
||||
void
|
||||
IncrementalFinalizeRunnable::ReleaseNow(bool aLimited)
|
||||
{
|
||||
if (mReleasing) {
|
||||
MOZ_ASSERT(false, "Try to avoid re-entering ReleaseNow!");
|
||||
return;
|
||||
}
|
||||
mozilla::AutoRestore<bool> ar(mReleasing);
|
||||
mReleasing = true;
|
||||
//MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(mDeferredFinalizeFunctions.Length() != 0,
|
||||
"We should have at least ReleaseSliceNow to run");
|
||||
MOZ_ASSERT(mFinalizeFunctionToRun < mDeferredFinalizeFunctions.Length(),
|
||||
@ -1218,21 +1210,7 @@ IncrementalFinalizeRunnable::Run()
|
||||
void
|
||||
CycleCollectedJSRuntime::FinalizeDeferredThings(DeferredFinalizeType aType)
|
||||
{
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
MOZ_ASSERT(!mFinalizeRunnable);
|
||||
mFinalizeRunnable = new IncrementalFinalizeRunnable(this,
|
||||
mDeferredSupports,
|
||||
mDeferredFinalizerTable);
|
||||
@ -1283,6 +1261,17 @@ CycleCollectedJSRuntime::OnGC(JSGCStatus aStatus)
|
||||
}
|
||||
#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.
|
||||
FinalizeDeferredThings(JS::WasIncrementalGC(mJSRuntime) ? FinalizeIncrementally :
|
||||
FinalizeNow);
|
||||
|
Loading…
Reference in New Issue
Block a user