Bug 1253094, part 4 - Stop using DebugOnly for class/struct members in js/. r=billm
MozReview-Commit-ID: J5zrpD00WVG
--- a/js/src/gc/StoreBuffer.h
+++ b/js/src/gc/StoreBuffer.h
@@ -403,23 +403,28 @@ class StoreBuffer
GenericBuffer bufferGeneric;
bool cancelIonCompilations_;
JSRuntime* runtime_;
const Nursery& nursery_;
bool aboutToOverflow_;
bool enabled_;
- mozilla::DebugOnly<bool> mEntered; /* For ReentrancyGuard. */
+#ifdef DEBUG
+ bool mEntered; /* For ReentrancyGuard. */
+#endif
public:
explicit StoreBuffer(JSRuntime* rt, const Nursery& nursery)
: bufferVal(), bufferCell(), bufferSlot(), bufferWholeCell(), bufferGeneric(),
cancelIonCompilations_(false), runtime_(rt), nursery_(nursery), aboutToOverflow_(false),
- enabled_(false), mEntered(false)
+ enabled_(false)
+#ifdef DEBUG
+ , mEntered(false)
+#endif
{
}
bool enable();
void disable();
bool isEnabled() const { return enabled_; }
bool clear();
--- a/js/src/jscntxt.h
+++ b/js/src/jscntxt.h
@@ -762,17 +762,19 @@ class MOZ_RAII AutoLockForExclusiveAcces
if (runtime->numExclusiveThreads) {
runtime->assertCanLock(ExclusiveAccessLock);
PR_Lock(runtime->exclusiveAccessLock);
#ifdef DEBUG
runtime->exclusiveAccessOwner = PR_GetCurrentThread();
#endif
} else {
MOZ_ASSERT(!runtime->mainThreadHasExclusiveAccess);
+#ifdef DEBUG
runtime->mainThreadHasExclusiveAccess = true;
+#endif
}
}
public:
explicit AutoLockForExclusiveAccess(ExclusiveContext* cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM) {
MOZ_GUARD_OBJECT_NOTIFIER_INIT;
init(cx->runtime_);
}
@@ -782,17 +784,19 @@ class MOZ_RAII AutoLockForExclusiveAcces
}
~AutoLockForExclusiveAccess() {
if (runtime->numExclusiveThreads) {
MOZ_ASSERT(runtime->exclusiveAccessOwner == PR_GetCurrentThread());
runtime->exclusiveAccessOwner = nullptr;
PR_Unlock(runtime->exclusiveAccessLock);
} else {
MOZ_ASSERT(runtime->mainThreadHasExclusiveAccess);
+#ifdef DEBUG
runtime->mainThreadHasExclusiveAccess = false;
+#endif
}
}
MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
};
} /* namespace js */
--- a/js/src/vm/Runtime.cpp
+++ b/js/src/vm/Runtime.cpp
@@ -148,17 +148,19 @@ JSRuntime::JSRuntime(JSRuntime* parentRu
#endif
interrupt_(false),
telemetryCallback(nullptr),
handlingSegFault(false),
handlingJitInterrupt_(false),
interruptCallback(nullptr),
exclusiveAccessLock(nullptr),
exclusiveAccessOwner(nullptr),
+#ifdef DEBUG
mainThreadHasExclusiveAccess(false),
+#endif
numExclusiveThreads(0),
numCompartments(0),
localeCallbacks(nullptr),
defaultLocale(nullptr),
defaultVersion_(JSVERSION_DEFAULT),
ownerThread_(nullptr),
ownerThreadNative_(0),
tempLifoAlloc(TEMP_LIFO_ALLOC_PRIMARY_CHUNK_SIZE),
@@ -424,17 +426,19 @@ JSRuntime::~JSRuntime()
finishSelfHosting();
MOZ_ASSERT(!exclusiveAccessOwner);
if (exclusiveAccessLock)
PR_DestroyLock(exclusiveAccessLock);
// Avoid bogus asserts during teardown.
MOZ_ASSERT(!numExclusiveThreads);
+#ifdef DEBUG
mainThreadHasExclusiveAccess = true;
+#endif
/*
* Even though all objects in the compartment are dead, we may have keep
* some filenames around because of gcKeepAtoms.
*/
FreeScriptData(this);
#ifdef DEBUG
--- a/js/src/vm/Runtime.h
+++ b/js/src/vm/Runtime.h
@@ -916,17 +916,19 @@ struct JSRuntime : public JS::shadow::Ru
* be accessed simultaneously by both the main thread and another thread
* with an ExclusiveContext.
*
* Locking this only occurs if there is actually a thread other than the
* main thread with an ExclusiveContext which could access such data.
*/
PRLock* exclusiveAccessLock;
mozilla::DebugOnly<PRThread*> exclusiveAccessOwner;
- mozilla::DebugOnly<bool> mainThreadHasExclusiveAccess;
+#ifdef DEBUG
+ bool mainThreadHasExclusiveAccess;
+#endif
/* Number of non-main threads with an ExclusiveContext. */
size_t numExclusiveThreads;
friend class js::AutoLockForExclusiveAccess;
public:
void setUsedByExclusiveThread(JS::Zone* zone);