зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1313489 - Part 1: Remove dead code. r=froydnj
MozReview-Commit-ID: HSS4Sf7O1I6
This commit is contained in:
Родитель
64b21983e5
Коммит
bdcf82a40b
|
@ -10,7 +10,7 @@
|
||||||
#include "TestHarness.h"
|
#include "TestHarness.h"
|
||||||
#include "nsIMemoryReporter.h"
|
#include "nsIMemoryReporter.h"
|
||||||
|
|
||||||
//#define OLD_API
|
#include "mozilla/Mutex.h"
|
||||||
|
|
||||||
#define PASS() \
|
#define PASS() \
|
||||||
do { \
|
do { \
|
||||||
|
@ -24,19 +24,6 @@
|
||||||
return NS_ERROR_FAILURE; \
|
return NS_ERROR_FAILURE; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#ifdef OLD_API
|
|
||||||
# include "nsAutoLock.h"
|
|
||||||
typedef PRLock* moz_lock_t;
|
|
||||||
# define NEWLOCK(n) nsAutoLock::NewLock(n)
|
|
||||||
# define DELETELOCK(v) nsAutoLock::DestroyLock(v)
|
|
||||||
# define AUTOLOCK(v, l) nsAutoLock v(l)
|
|
||||||
#else
|
|
||||||
# include "mozilla/Mutex.h"
|
|
||||||
typedef mozilla::Mutex* moz_lock_t;
|
|
||||||
# define NEWLOCK(n) new mozilla::Mutex(n)
|
|
||||||
# define DELETELOCK(v) delete (v)
|
|
||||||
# define AUTOLOCK(v, l) mozilla::MutexAutoLock v(*l)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// def/undef these to run particular tests.
|
// def/undef these to run particular tests.
|
||||||
#undef DD_TEST1
|
#undef DD_TEST1
|
||||||
|
@ -54,12 +41,12 @@ AllocLockRecurseUnlockFree(int i)
|
||||||
if (0 == i)
|
if (0 == i)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
moz_lock_t lock = NEWLOCK("deadlockDetector.scalability.t1");
|
mozilla::Mutex* lock = new mozilla::Mutex("deadlockDetector.scalability.t1");
|
||||||
{
|
{
|
||||||
AUTOLOCK(_, lock);
|
mozilla::MutexAutoLock _(*lock);
|
||||||
AllocLockRecurseUnlockFree(i - 1);
|
AllocLockRecurseUnlockFree(i - 1);
|
||||||
}
|
}
|
||||||
DELETELOCK(lock);
|
delete lock;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test creates a resource dependency chain N elements long, then
|
// This test creates a resource dependency chain N elements long, then
|
||||||
|
@ -82,30 +69,30 @@ LengthNDepChain(int N)
|
||||||
static nsresult
|
static nsresult
|
||||||
OneLockNDeps(const int N, const int K)
|
OneLockNDeps(const int N, const int K)
|
||||||
{
|
{
|
||||||
moz_lock_t lock = NEWLOCK("deadlockDetector.scalability.t2.master");
|
mozilla::Mutex* lock = new mozilla::Mutex("deadlockDetector.scalability.t2.master");
|
||||||
moz_lock_t* locks = new moz_lock_t[N];
|
mozilla::Mutex** locks = new mozilla::Mutex*[N];
|
||||||
if (!locks)
|
if (!locks)
|
||||||
NS_RUNTIMEABORT("couldn't allocate lock array");
|
NS_RUNTIMEABORT("couldn't allocate lock array");
|
||||||
|
|
||||||
for (int i = 0; i < N; ++i)
|
for (int i = 0; i < N; ++i)
|
||||||
locks[i] =
|
locks[i] =
|
||||||
NEWLOCK("deadlockDetector.scalability.t2.dep");
|
new mozilla::Mutex("deadlockDetector.scalability.t2.dep");
|
||||||
|
|
||||||
// establish orders
|
// establish orders
|
||||||
{AUTOLOCK(m, lock);
|
{mozilla::MutexAutoLock m(*lock);
|
||||||
for (int i = 0; i < N; ++i)
|
for (int i = 0; i < N; ++i)
|
||||||
AUTOLOCK(s, locks[i]);
|
mozilla::MutexAutoLock s(*locks[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// exercise order check
|
// exercise order check
|
||||||
{AUTOLOCK(m, lock);
|
{mozilla::MutexAutoLock m(*lock);
|
||||||
for (int i = 0; i < K; ++i)
|
for (int i = 0; i < K; ++i)
|
||||||
for (int j = 0; j < N; ++j)
|
for (int j = 0; j < N; ++j)
|
||||||
AUTOLOCK(s, locks[i]);
|
mozilla::MutexAutoLock s(*locks[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < N; ++i)
|
for (int i = 0; i < N; ++i)
|
||||||
DELETELOCK(locks[i]);
|
delete locks[i];
|
||||||
delete[] locks;
|
delete[] locks;
|
||||||
|
|
||||||
PASS();
|
PASS();
|
||||||
|
@ -127,29 +114,29 @@ OneLockNDeps(const int N, const int K)
|
||||||
static nsresult
|
static nsresult
|
||||||
MaxDepsNsq(const int N, const int K)
|
MaxDepsNsq(const int N, const int K)
|
||||||
{
|
{
|
||||||
moz_lock_t* locks = new moz_lock_t[N];
|
mozilla::Mutex** locks = new mozilla::Mutex*[N];
|
||||||
if (!locks)
|
if (!locks)
|
||||||
NS_RUNTIMEABORT("couldn't allocate lock array");
|
NS_RUNTIMEABORT("couldn't allocate lock array");
|
||||||
|
|
||||||
for (int i = 0; i < N; ++i)
|
for (int i = 0; i < N; ++i)
|
||||||
locks[i] = NEWLOCK("deadlockDetector.scalability.t3");
|
locks[i] = new mozilla::Mutex("deadlockDetector.scalability.t3");
|
||||||
|
|
||||||
for (int i = 0; i < N; ++i) {
|
for (int i = 0; i < N; ++i) {
|
||||||
AUTOLOCK(al1, locks[i]);
|
mozilla::MutexAutoLock al1(*locks[i]);
|
||||||
for (int j = i+1; j < N; ++j)
|
for (int j = i+1; j < N; ++j)
|
||||||
AUTOLOCK(al2, locks[j]);
|
mozilla::MutexAutoLock al2(*locks[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < K; ++i) {
|
for (int i = 0; i < K; ++i) {
|
||||||
for (int j = 0; j < N; ++j) {
|
for (int j = 0; j < N; ++j) {
|
||||||
AUTOLOCK(al1, locks[j]);
|
mozilla::MutexAutoLock al1(*locks[j]);
|
||||||
for (int k = j+1; k < N; ++k)
|
for (int k = j+1; k < N; ++k)
|
||||||
AUTOLOCK(al2, locks[k]);
|
mozilla::MutexAutoLock al2(*locks[k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < N; ++i)
|
for (int i = 0; i < N; ++i)
|
||||||
DELETELOCK(locks[i]);
|
delete locks[i];
|
||||||
delete[] locks;
|
delete[] locks;
|
||||||
|
|
||||||
PASS();
|
PASS();
|
||||||
|
@ -169,25 +156,25 @@ static nsresult
|
||||||
OneLockNDepsUsedSeveralTimes(const size_t N, const size_t K)
|
OneLockNDepsUsedSeveralTimes(const size_t N, const size_t K)
|
||||||
{
|
{
|
||||||
// Create master lock.
|
// Create master lock.
|
||||||
moz_lock_t lock_1 = NEWLOCK("deadlockDetector.scalability.t4.master");
|
mozilla::Mutex* lock_1 = new mozilla::Mutex("deadlockDetector.scalability.t4.master");
|
||||||
for (size_t n = 0; n < N; n++) {
|
for (size_t n = 0; n < N; n++) {
|
||||||
// Create child lock.
|
// Create child lock.
|
||||||
moz_lock_t lock_2 = NEWLOCK("deadlockDetector.scalability.t4.child");
|
mozilla::Mutex* lock_2 = new mozilla::Mutex("deadlockDetector.scalability.t4.child");
|
||||||
|
|
||||||
// First lock the master.
|
// First lock the master.
|
||||||
AUTOLOCK(m, lock_1);
|
mozilla::MutexAutoLock m(*lock_1);
|
||||||
|
|
||||||
// Now lock and unlock the child a few times.
|
// Now lock and unlock the child a few times.
|
||||||
for (size_t k = 0; k < K; k++) {
|
for (size_t k = 0; k < K; k++) {
|
||||||
AUTOLOCK(c, lock_2);
|
mozilla::MutexAutoLock c(*lock_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destroy the child lock.
|
// Destroy the child lock.
|
||||||
DELETELOCK(lock_2);
|
delete lock_2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cleanup the master lock.
|
// Cleanup the master lock.
|
||||||
DELETELOCK(lock_1);
|
delete lock_1;
|
||||||
|
|
||||||
PASS();
|
PASS();
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче