From: Sean Stangl <sstangl@mozilla.com>
Date: Fri, 6 Dec 2013 15:03:08 -0800

Bug 939505 - Use JS_DEBUG in public headers [esr24].

diff --git a/js/public/CallArgs.h b/js/public/CallArgs.h
--- a/js/public/CallArgs.h
+++ b/js/public/CallArgs.h
@@ -122,7 +122,7 @@ class MOZ_STACK_CLASS UsedRvalBase<NoUse
 
 template<UsedRval WantUsedRval>
 class MOZ_STACK_CLASS CallReceiverBase : public UsedRvalBase<
-#ifdef DEBUG
+#ifdef JS_DEBUG
         WantUsedRval
 #else
         NoUsedRval
diff --git a/js/public/HashTable.h b/js/public/HashTable.h
--- a/js/public/HashTable.h
+++ b/js/public/HashTable.h
@@ -698,7 +698,7 @@ class HashTable : private AllocPolicy
       public:
         // Leaves Ptr uninitialized.
         Ptr() {
-#ifdef DEBUG
+#ifdef JS_DEBUG
             entry_ = (Entry *)0xbad;
 #endif
         }
@@ -856,7 +856,7 @@ class HashTable : private AllocPolicy
         hashShift = sHashBits - sizeLog2;
     }
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     mutable struct Stats
     {
         uint32_t        searches;       // total number of table searches
diff --git a/js/public/RootingAPI.h b/js/public/RootingAPI.h
--- a/js/public/RootingAPI.h
+++ b/js/public/RootingAPI.h
@@ -150,7 +150,7 @@ template <typename T> class MutableHandl
 /* This is exposing internal state of the GC for inlining purposes. */
 JS_FRIEND_API(bool) isGCEnabled();
 
-#if defined(DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
+#if defined(JS_DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
 extern void
 CheckStackRoots(JSContext *cx);
 #endif
@@ -509,7 +509,7 @@ struct GCMethods<T *>
 #endif
 };
 
-#if defined(DEBUG) && defined(JS_THREADSAFE)
+#if defined(JS_DEBUG) && defined(JS_THREADSAFE)
 /* This helper allows us to assert that Rooted<T> is scoped within a request. */
 extern JS_PUBLIC_API(bool)
 IsInRequest(JSContext *cx);
@@ -654,7 +654,7 @@ class MOZ_STACK_CLASS Rooted : public js
     Rooted<void*> **stack, *prev;
 #endif
 
-#if defined(DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
+#if defined(JS_DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
     /* Has the rooting analysis ever scanned this Rooted's stack location? */
     friend void JS::CheckStackRoots(JSContext*);
     bool scanned;
@@ -698,7 +698,7 @@ namespace js {
  */
 class SkipRoot
 {
-#if defined(DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
+#if defined(JS_DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
 
     SkipRoot **stack, *prev;
     const uint8_t *start;
@@ -742,7 +742,7 @@ class SkipRoot
         return v >= start && v + len <= end;
     }
 
-#else /* DEBUG && JSGC_ROOT_ANALYSIS */
+#else /* JS_DEBUG && JSGC_ROOT_ANALYSIS */
 
   public:
     template <typename T>
@@ -759,7 +759,7 @@ class SkipRoot
         MOZ_GUARD_OBJECT_NOTIFIER_INIT;
     }
 
-#endif /* DEBUG && JSGC_ROOT_ANALYSIS */
+#endif /* JS_DEBUG && JSGC_ROOT_ANALYSIS */
 
     MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
 };
@@ -931,7 +931,7 @@ namespace js {
  */
 inline void MaybeCheckStackRoots(JSContext *cx)
 {
-#if defined(DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
+#if defined(JS_DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
     JS::CheckStackRoots(cx);
 #endif
 }
diff --git a/js/public/Utility.h b/js/public/Utility.h
--- a/js/public/Utility.h
+++ b/js/public/Utility.h
@@ -45,7 +45,7 @@ namespace js {}
 #define JS_ALWAYS_TRUE(expr)      MOZ_ALWAYS_TRUE(expr)
 #define JS_ALWAYS_FALSE(expr)     MOZ_ALWAYS_FALSE(expr)
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
 # ifdef JS_THREADSAFE
 #  define JS_THREADSAFE_ASSERT(expr) JS_ASSERT(expr)
 # else
@@ -55,7 +55,7 @@ namespace js {}
 # define JS_THREADSAFE_ASSERT(expr) ((void) 0)
 #endif
 
-#if defined(DEBUG)
+#if defined(JS_DEBUG)
 # define JS_DIAGNOSTICS_ASSERT(expr) MOZ_ASSERT(expr)
 #elif defined(JS_CRASH_DIAGNOSTICS)
 # define JS_DIAGNOSTICS_ASSERT(expr) do { if (!(expr)) MOZ_CRASH(); } while(0)
@@ -82,7 +82,7 @@ extern JS_PUBLIC_API(void) JS_Abort(void
 #if defined JS_USE_CUSTOM_ALLOCATOR
 # include "jscustomallocator.h"
 #else
-# ifdef DEBUG
+# ifdef JS_DEBUG
 /*
  * In order to test OOM conditions, when the testing function
  * oomAfterAllocations COUNT is passed, we fail continuously after the NUM'th
@@ -146,7 +146,7 @@ PrintBacktrace()
 # else
 #  define JS_OOM_POSSIBLY_FAIL() do {} while(0)
 #  define JS_OOM_POSSIBLY_FAIL_REPORT(cx) do {} while(0)
-# endif /* DEBUG */
+# endif /* JS_DEBUG */
 
 static JS_INLINE void* js_malloc(size_t bytes)
 {
@@ -697,26 +697,26 @@ class ReentrancyGuard
     ReentrancyGuard(const ReentrancyGuard &);
     void operator=(const ReentrancyGuard &);
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     bool &entered;
 #endif
   public:
     template <class T>
-#ifdef DEBUG
+#ifdef JS_DEBUG
     ReentrancyGuard(T &obj)
       : entered(obj.entered)
 #else
     ReentrancyGuard(T &/*obj*/)
 #endif
     {
-#ifdef DEBUG
+#ifdef JS_DEBUG
         JS_ASSERT(!entered);
         entered = true;
 #endif
     }
     ~ReentrancyGuard()
     {
-#ifdef DEBUG
+#ifdef JS_DEBUG
         entered = false;
 #endif
     }
@@ -803,7 +803,7 @@ namespace JS {
 
 inline void PoisonPtr(void *v)
 {
-#if defined(JSGC_ROOT_ANALYSIS) && defined(DEBUG)
+#if defined(JSGC_ROOT_ANALYSIS) && defined(JS_DEBUG)
     uint8_t *ptr = (uint8_t *) v + 3;
     *ptr = JS_FREE_PATTERN;
 #endif
@@ -812,7 +812,7 @@ inline void PoisonPtr(void *v)
 template <typename T>
 inline bool IsPoisonedPtr(T *v)
 {
-#if defined(JSGC_ROOT_ANALYSIS) && defined(DEBUG)
+#if defined(JSGC_ROOT_ANALYSIS) && defined(JS_DEBUG)
     uint32_t mask = uintptr_t(v) & 0xff000000;
     return mask == uint32_t(JS_FREE_PATTERN << 24);
 #else
diff --git a/js/public/Value.h b/js/public/Value.h
--- a/js/public/Value.h
+++ b/js/public/Value.h
@@ -1649,7 +1649,7 @@ inline Anchor<Value>::~Anchor()
 }
 #endif
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
 namespace detail {
 
 struct ValueAlignmentTester { char c; JS::Value v; };
@@ -1661,7 +1661,7 @@ MOZ_STATIC_ASSERT(sizeof(LayoutAlignment
                   "jsval_layout must be 16-byte-aligned");
 
 } // namespace detail
-#endif /* DEBUG */
+#endif /* JS_DEBUG */
 
 } // namespace JS
 
diff --git a/js/public/Vector.h b/js/public/Vector.h
--- a/js/public/Vector.h
+++ b/js/public/Vector.h
@@ -251,13 +251,13 @@ class Vector : private AllocPolicy
     T *mBegin;
     size_t mLength;     /* Number of elements in the Vector. */
     size_t mCapacity;   /* Max number of elements storable in the Vector without resizing. */
-#ifdef DEBUG
+#ifdef JS_DEBUG
     size_t mReserved;   /* Max elements of reserved or used space in this vector. */
 #endif
 
     mozilla::AlignedStorage<sInlineBytes> storage;
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     friend class ReentrancyGuard;
     bool entered;
 #endif
@@ -287,7 +287,7 @@ class Vector : private AllocPolicy
         return mBegin + mLength;
     }
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     size_t reserved() const {
         JS_ASSERT(mReserved <= mCapacity);
         JS_ASSERT(mLength <= mReserved);
@@ -530,7 +530,7 @@ JS_ALWAYS_INLINE
 Vector<T,N,AllocPolicy>::Vector(AllocPolicy ap)
   : AllocPolicy(ap), mBegin((T *)storage.addr()), mLength(0),
     mCapacity(sInlineCapacity)
-#ifdef DEBUG
+#ifdef JS_DEBUG
   , mReserved(sInlineCapacity), entered(false)
 #endif
 {}
@@ -540,13 +540,13 @@ template <class T, size_t N, class Alloc
 JS_ALWAYS_INLINE
 Vector<T, N, AllocPolicy>::Vector(MoveRef<Vector> rhs)
     : AllocPolicy(rhs)
-#ifdef DEBUG
+#ifdef JS_DEBUG
     , entered(false)
 #endif
 {
     mLength = rhs->mLength;
     mCapacity = rhs->mCapacity;
-#ifdef DEBUG
+#ifdef JS_DEBUG
     mReserved = rhs->mReserved;
 #endif
 
@@ -567,7 +567,7 @@ Vector<T, N, AllocPolicy>::Vector(MoveRe
         rhs->mBegin = (T *) rhs->storage.addr();
         rhs->mCapacity = sInlineCapacity;
         rhs->mLength = 0;
-#ifdef DEBUG
+#ifdef JS_DEBUG
         rhs->mReserved = sInlineCapacity;
 #endif
     }
@@ -714,7 +714,7 @@ Vector<T,N,AP>::initCapacity(size_t requ
         return false;
     mBegin = newbuf;
     mCapacity = request;
-#ifdef DEBUG
+#ifdef JS_DEBUG
     mReserved = request;
 #endif
     return true;
@@ -728,7 +728,7 @@ Vector<T,N,AP>::reserve(size_t request)
     if (request > mCapacity && !growStorageBy(request - mLength))
         return false;
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     if (request > mReserved)
         mReserved = request;
     JS_ASSERT(mLength <= mReserved);
@@ -761,7 +761,7 @@ Vector<T,N,AP>::growByImpl(size_t incr)
     if (InitNewElems)
         Impl::initialize(endNoCheck(), newend);
     mLength += incr;
-#ifdef DEBUG
+#ifdef JS_DEBUG
     if (mLength > mReserved)
         mReserved = mLength;
 #endif
@@ -826,7 +826,7 @@ Vector<T,N,AP>::clearAndFree()
     this->free_(beginNoCheck());
     mBegin = (T *)storage.addr();
     mCapacity = sInlineCapacity;
-#ifdef DEBUG
+#ifdef JS_DEBUG
     mReserved = sInlineCapacity;
 #endif
 }
@@ -847,7 +847,7 @@ Vector<T,N,AP>::append(U t)
     if (mLength == mCapacity && !growStorageBy(1))
         return false;
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     if (mLength + 1 > mReserved)
         mReserved = mLength + 1;
 #endif
@@ -874,7 +874,7 @@ Vector<T,N,AP>::appendN(const T &t, size
     if (mLength + needed > mCapacity && !growStorageBy(needed))
         return false;
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     if (mLength + needed > mReserved)
         mReserved = mLength + needed;
 #endif
@@ -936,7 +936,7 @@ Vector<T,N,AP>::append(const U *insBegin
     if (mLength + needed > mCapacity && !growStorageBy(needed))
         return false;
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     if (mLength + needed > mReserved)
         mReserved = mLength + needed;
 #endif
@@ -1016,7 +1016,7 @@ Vector<T,N,AP>::extractRawBuffer()
         mBegin = (T *)storage.addr();
         mLength = 0;
         mCapacity = sInlineCapacity;
-#ifdef DEBUG
+#ifdef JS_DEBUG
         mReserved = sInlineCapacity;
 #endif
     }
@@ -1052,7 +1052,7 @@ Vector<T,N,AP>::replaceRawBuffer(T *p, s
         mLength = aLength;
         mCapacity = aLength;
     }
-#ifdef DEBUG
+#ifdef JS_DEBUG
     mReserved = aLength;
 #endif
 }
@@ -1093,7 +1093,7 @@ Vector<T,N,AP>::swap(Vector &other)
 
     Swap(mLength, other.mLength);
     Swap(mCapacity, other.mCapacity);
-#ifdef DEBUG
+#ifdef JS_DEBUG
     Swap(mReserved, other.mReserved);
 #endif
 }
diff --git a/js/src/configure.in b/js/src/configure.in
--- a/js/src/configure.in
+++ b/js/src/configure.in
@@ -3727,6 +3727,13 @@ if test -n "$MOZ_VTUNE"; then
 fi
 
 dnl ========================================================
+dnl Debug (see Bug 939505)
+dnl ========================================================
+if test -n "$MOZ_DEBUG"; then
+    AC_DEFINE(JS_DEBUG)
+fi
+
+dnl ========================================================
 dnl Profiling
 dnl ========================================================
 if test -n "$MOZ_PROFILING"; then
diff --git a/js/src/js-config.h.in b/js/src/js-config.h.in
--- a/js/src/js-config.h.in
+++ b/js/src/js-config.h.in
@@ -12,6 +12,12 @@
    This header file is generated by the SpiderMonkey configure script,
    and installed along with jsapi.h.  */
 
+/* Define to 1 if SpiderMonkey is in debug mode. */
+#undef JS_DEBUG
+
+/* Define to 1 if SpiderMonkey should not use struct types in debug builds. */
+#undef JS_NO_JSVAL_JSID_STRUCT_TYPES
+
 /* Define to 1 if SpiderMonkey should support multi-threaded clients.  */
 #undef JS_THREADSAFE
 
diff --git a/js/src/jsapi.h b/js/src/jsapi.h
--- a/js/src/jsapi.h
+++ b/js/src/jsapi.h
@@ -47,7 +47,7 @@ class StableCharPtr : public CharPtr {
     {}
 };
 
-#if defined JS_THREADSAFE && defined DEBUG
+#if defined JS_THREADSAFE && defined JS_DEBUG
 
 class JS_PUBLIC_API(AutoCheckRequestDepth)
 {
@@ -65,9 +65,9 @@ class JS_PUBLIC_API(AutoCheckRequestDept
 # define CHECK_REQUEST(cx) \
     ((void) 0)
 
-#endif /* JS_THREADSAFE && DEBUG */
-
-#ifdef DEBUG
+#endif /* JS_THREADSAFE && JS_DEBUG */
+
+#ifdef JS_DEBUG
 /*
  * Assert that we're not doing GC on cx, that we're in a request as
  * needed, and that the compartments for cx and v are correct.
@@ -79,7 +79,7 @@ AssertArgumentsAreSane(JSContext *cx, co
 inline void AssertArgumentsAreSane(JSContext *cx, const Value &v) {
     /* Do nothing */
 }
-#endif /* DEBUG */
+#endif /* JS_DEBUG */
 
 class JS_PUBLIC_API(AutoGCRooter) {
   public:
@@ -1830,7 +1830,7 @@ class JSAutoCheckRequest
     JSAutoCheckRequest(JSContext *cx
                        MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
     {
-#if defined JS_THREADSAFE && defined DEBUG
+#if defined JS_THREADSAFE && defined JS_DEBUG
         mContext = cx;
         JS_ASSERT(JS_IsInRequest(JS_GetRuntime(cx)));
 #endif
@@ -1838,14 +1838,14 @@ class JSAutoCheckRequest
     }
 
     ~JSAutoCheckRequest() {
-#if defined JS_THREADSAFE && defined DEBUG
+#if defined JS_THREADSAFE && defined JS_DEBUG
         JS_ASSERT(JS_IsInRequest(JS_GetRuntime(mContext)));
 #endif
     }
 
 
   private:
-#if defined JS_THREADSAFE && defined DEBUG
+#if defined JS_THREADSAFE && defined JS_DEBUG
     JSContext *mContext;
 #endif
     MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
@@ -2592,10 +2592,10 @@ JS_GetTraceThingInfo(char *buf, size_t b
 extern JS_PUBLIC_API(const char *)
 JS_GetTraceEdgeName(JSTracer *trc, char *buffer, int bufferSize);
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
 
 /*
- * DEBUG-only method to dump the object graph of heap-allocated things.
+ * Debug-only method to dump the object graph of heap-allocated things.
  *
  * fp:              file for the dump output.
  * start:           when non-null, dump only things reachable from start
@@ -3733,13 +3733,13 @@ struct JSPrincipals {
     /* Don't call "destroy"; use reference counting macros below. */
     int refcount;
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     /* A helper to facilitate principals debugging. */
     uint32_t    debugToken;
 #endif
 
     void setDebugToken(uint32_t token) {
-# ifdef DEBUG
+# ifdef JS_DEBUG
         debugToken = token;
 # endif
     }
@@ -5026,7 +5026,7 @@ class JSAutoSetRuntimeThread
 static JS_ALWAYS_INLINE JSBool
 JS_IsConstructing(JSContext *cx, const jsval *vp)
 {
-#ifdef DEBUG
+#ifdef JS_DEBUG
     JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
     if (JS_ObjectIsFunction(cx, callee)) {
         JSFunction *fun = JS_ValueToFunction(cx, JS_CALLEE(cx, vp));
diff --git a/js/src/jsdbgapi.h b/js/src/jsdbgapi.h
--- a/js/src/jsdbgapi.h
+++ b/js/src/jsdbgapi.h
@@ -39,7 +39,7 @@ FormatStackDump(JSContext *cx, char *buf
 
 }
 
-# ifdef DEBUG
+# ifdef JS_DEBUG
 JS_FRIEND_API(void) js_DumpValue(const js::Value &val);
 JS_FRIEND_API(void) js_DumpId(jsid id);
 JS_FRIEND_API(void) js_DumpStackFrame(JSContext *cx, js::StackFrame *start = NULL);
diff --git a/js/src/jsfriendapi.h b/js/src/jsfriendapi.h
--- a/js/src/jsfriendapi.h
+++ b/js/src/jsfriendapi.h
@@ -137,7 +137,7 @@ js_ObjectClassIs(JSContext *cx, JS::Hand
 JS_FRIEND_API(const char *)
 js_ObjectClassName(JSContext *cx, JS::HandleObject obj);
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
 
 /*
  * Routines to print out values during debugging.  These are FRIEND_API to help
@@ -824,7 +824,7 @@ CastToJSFreeOp(FreeOp *fop)
 extern JS_FRIEND_API(const jschar*)
 GetErrorTypeName(JSContext* cx, int16_t exnType);
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
 extern JS_FRIEND_API(unsigned)
 GetEnterCompartmentDepth(JSContext* cx);
 #endif
@@ -1725,7 +1725,7 @@ class JS_FRIEND_API(AutoCTypesActivityCa
     }
 };
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
 extern JS_FRIEND_API(void)
 assertEnteredPolicy(JSContext *cx, JSObject *obj, jsid id);
 #else
diff --git a/js/src/jsproxy.h b/js/src/jsproxy.h
--- a/js/src/jsproxy.h
+++ b/js/src/jsproxy.h
@@ -358,7 +358,7 @@ class JS_FRIEND_API(AutoEnterPolicy)
     typedef BaseProxyHandler::Action Action;
     AutoEnterPolicy(JSContext *cx, BaseProxyHandler *handler,
                     HandleObject wrapper, HandleId id, Action act, bool mayThrow)
-#ifdef DEBUG
+#ifdef JS_DEBUG
         : context(NULL)
 #endif
     {
@@ -381,7 +381,7 @@ class JS_FRIEND_API(AutoEnterPolicy)
   protected:
     // no-op constructor for subclass
     AutoEnterPolicy()
-#ifdef DEBUG
+#ifdef JS_DEBUG
         : context(NULL)
 #endif
         {};
@@ -389,7 +389,7 @@ class JS_FRIEND_API(AutoEnterPolicy)
     bool allow;
     bool rv;
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
     JSContext *context;
     mozilla::Maybe<HandleObject> enteredProxy;
     mozilla::Maybe<HandleId> enteredId;
@@ -408,7 +408,7 @@ class JS_FRIEND_API(AutoEnterPolicy)
 
 };
 
-#ifdef DEBUG
+#ifdef JS_DEBUG
 class JS_FRIEND_API(AutoWaivePolicy) : public AutoEnterPolicy {
 public:
     AutoWaivePolicy(JSContext *cx, HandleObject proxy, HandleId id)
diff --git a/js/src/jspubtd.h b/js/src/jspubtd.h
--- a/js/src/jspubtd.h
+++ b/js/src/jspubtd.h
@@ -44,7 +44,7 @@ struct Zone;
  * oblivious to the change. This feature can be explicitly disabled in debug
  * builds by defining JS_NO_JSVAL_JSID_STRUCT_TYPES.
  */
-# if defined(DEBUG) && !defined(JS_NO_JSVAL_JSID_STRUCT_TYPES)
+# if defined(JS_DEBUG) && !defined(JS_NO_JSVAL_JSID_STRUCT_TYPES)
 #  define JS_USE_JSID_STRUCT_TYPES
 # endif
 
@@ -304,7 +304,7 @@ struct ContextFriendFields
     JS::Rooted<void*> *thingGCRooters[THING_ROOT_LIMIT];
 #endif
 
-#if defined(DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
+#if defined(JS_DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
     /*
      * Stack allocated list of stack locations which hold non-relocatable
      * GC heap pointers (where the target is rooted somewhere else) or integer
@@ -334,7 +334,7 @@ struct PerThreadDataFriendFields
         struct PerThreadDummy {
             void *field1;
             uintptr_t field2;
-#ifdef DEBUG
+#ifdef JS_DEBUG
             uint64_t field3;
 #endif
         } mainThread;
@@ -352,7 +352,7 @@ struct PerThreadDataFriendFields
     JS::Rooted<void*> *thingGCRooters[THING_ROOT_LIMIT];
 #endif
 
-#if defined(DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
+#if defined(JS_DEBUG) && defined(JS_GC_ZEAL) && defined(JSGC_ROOT_ANALYSIS) && !defined(JS_THREADSAFE)
     /*
      * Stack allocated list of stack locations which hold non-relocatable
      * GC heap pointers (where the target is rooted somewhere else) or integer
diff --git a/js/src/jsutil.h b/js/src/jsutil.h
--- a/js/src/jsutil.h
+++ b/js/src/jsutil.h
@@ -302,7 +302,7 @@ bool DecompressString(const unsigned cha
 }  /* namespace js */
 
 /* Crash diagnostics */
-#ifdef DEBUG
+#ifdef JS_DEBUG
 # define JS_CRASH_DIAGNOSTICS 1
 #endif
 #ifdef JS_CRASH_DIAGNOSTICS
@@ -312,7 +312,7 @@ bool DecompressString(const unsigned cha
 #endif
 
 /* Basic stats */
-#ifdef DEBUG
+#ifdef JS_DEBUG
 # define JS_BASIC_STATS 1
 #endif
 #ifdef JS_BASIC_STATS
