---
xpcom/ds/nsExpirationTracker.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
Index: mozilla/xpcom/ds/nsExpirationTracker.h
===================================================================
--- mozilla.orig/xpcom/ds/nsExpirationTracker.h 2007-05-28 14:51:08.000000000 +0000
+++ mozilla/xpcom/ds/nsExpirationTracker.h 2007-06-03 18:41:25.000000000 +0000
@@ -40,16 +40,31 @@
#define NSEXPIRATIONTRACKER_H_
#include "prlog.h"
#include "nsTArray.h"
#include "nsITimer.h"
#include "nsCOMPtr.h"
#include "nsComponentManagerUtils.h"
+/* asac: backported from trunk nspr
+ ** Compile-time assert. "condition" must be a constant expression.
+ ** The macro should be used only once per source line in places where
+ ** a "typedef" declaration is allowed.
+ ** For stringification of the line numbers where the macro is used we need some
+ ** macro indirection. IMPL is required to get macro-expansion of __LINE__ to
+ ** its integer value so that IMPL2 will stringify the number, not "__LINE__".
+ */
+ #define PR_STATIC_ASSERT(condition) \
+ PR_STATIC_ASSERT_IMPL(condition, __LINE__)
+ #define PR_STATIC_ASSERT_IMPL(condition, line) \
+ PR_STATIC_ASSERT_IMPL2(condition, line)
+ #define PR_STATIC_ASSERT_IMPL2(condition, line) \
+ typedef int pr_static_assert_line_##line[(condition) ? 1 : -1]
+
/**
* Data used to track the expiration state of an object. We promise that this
* is 32 bits so that objects that includes this as a field can pad and align
* efficiently.
*/
struct nsExpirationState {
enum { NOT_TRACKED = (1U << 4) - 1,
MAX_INDEX_IN_GENERATION = (1U << 28) - 1 };