diff -up mozilla-esr24/xpcom/ds/TimeStamp.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp.cpp
--- mozilla-esr24/xpcom/ds/TimeStamp.cpp.906754 2013-12-06 03:21:33.000000000 +0100
+++ mozilla-esr24/xpcom/ds/TimeStamp.cpp 2013-12-20 16:11:06.607243958 +0100
@@ -13,15 +13,41 @@
namespace mozilla {
-TimeStamp TimeStamp::sFirstTimeStamp;
-TimeStamp TimeStamp::sProcessCreation;
+/**
+ * Wrapper class used to initialize static data used by the TimeStamp class
+ */
+struct TimeStampInitialization {
+ /**
+ * First timestamp taken when the class static initializers are run. This
+ * timestamp is used to sanitize timestamps coming from different sources.
+ */
+ TimeStamp mFirstTimeStamp;
+
+ /**
+ * Timestamp representing the time when the process was created. This field
+ * is populated lazily the first time this information is required and is
+ * replaced every time the process is restarted.
+ */
+ TimeStamp mProcessCreation;
+
+ TimeStampInitialization() {
+ TimeStamp::Startup();
+ mFirstTimeStamp = TimeStamp::Now();
+ };
+
+ ~TimeStampInitialization() {
+ TimeStamp::Shutdown();
+ };
+};
+
+static TimeStampInitialization sInitOnce;
TimeStamp
TimeStamp::ProcessCreation(bool& aIsInconsistent)
{
aIsInconsistent = false;
- if (sProcessCreation.IsNull()) {
+ if (sInitOnce.mProcessCreation.IsNull()) {
char *mozAppRestart = PR_GetEnv("MOZ_APP_RESTART");
TimeStamp ts;
@@ -31,7 +57,7 @@ TimeStamp::ProcessCreation(bool& aIsInco
if (mozAppRestart && (strcmp(mozAppRestart, "") != 0)) {
/* Firefox was restarted, use the first time-stamp we've taken as the new
* process startup time and unset MOZ_APP_RESTART. */
- ts = sFirstTimeStamp;
+ ts = sInitOnce.mFirstTimeStamp;
PR_SetEnv("MOZ_APP_RESTART=");
} else {
TimeStamp now = Now();
@@ -39,26 +65,26 @@ TimeStamp::ProcessCreation(bool& aIsInco
ts = now - TimeDuration::FromMicroseconds(uptime);
- if ((ts > sFirstTimeStamp) || (uptime == 0)) {
+ if ((ts > sInitOnce.mFirstTimeStamp) || (uptime == 0)) {
/* If the process creation timestamp was inconsistent replace it with
* the first one instead and notify that a telemetry error was
* detected. */
aIsInconsistent = true;
- ts = sFirstTimeStamp;
+ ts = sInitOnce.mFirstTimeStamp;
}
}
- sProcessCreation = ts;
+ sInitOnce.mProcessCreation = ts;
}
- return sProcessCreation;
+ return sInitOnce.mProcessCreation;
}
void
TimeStamp::RecordProcessRestart()
{
PR_SetEnv("MOZ_APP_RESTART=1");
- sProcessCreation = TimeStamp();
+ sInitOnce.mProcessCreation = TimeStamp();
}
} // namespace mozilla
diff -up mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp
--- mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp.906754 2013-12-06 03:21:33.000000000 +0100
+++ mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp 2013-12-20 15:58:50.356993425 +0100
@@ -114,18 +114,6 @@ TimeDuration::Resolution()
return TimeDuration::FromTicks(int64_t(sResolution));
}
-struct TimeStampInitialization
-{
- TimeStampInitialization() {
- TimeStamp::Startup();
- }
- ~TimeStampInitialization() {
- TimeStamp::Shutdown();
- }
-};
-
-static TimeStampInitialization initOnce;
-
nsresult
TimeStamp::Startup()
{
@@ -152,8 +140,6 @@ TimeStamp::Startup()
sResolutionSigDigs *= 10);
gInitialized = true;
- sFirstTimeStamp = TimeStamp::Now();
- sProcessCreation = TimeStamp();
return NS_OK;
}
diff -up mozilla-esr24/xpcom/ds/TimeStamp.h.906754 mozilla-esr24/xpcom/ds/TimeStamp.h
--- mozilla-esr24/xpcom/ds/TimeStamp.h.906754 2013-12-06 03:21:33.000000000 +0100
+++ mozilla-esr24/xpcom/ds/TimeStamp.h 2013-12-20 15:58:50.356993425 +0100
@@ -363,19 +363,6 @@ private:
* When using a system clock, a value is system dependent.
*/
TimeStampValue mValue;
-
- /**
- * First timestamp taken when the class static initializers are run. This
- * timestamp is used to sanitize timestamps coming from different sources.
- */
- static TimeStamp sFirstTimeStamp;
-
- /**
- * Timestamp representing the time when the process was created. This field
- * is populated lazily the first time this information is required and is
- * replaced every time the process is restarted.
- */
- static TimeStamp sProcessCreation;
};
}
diff -up mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp
--- mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp.906754 2013-12-06 03:21:33.000000000 +0100
+++ mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp 2013-12-20 15:58:50.356993425 +0100
@@ -159,17 +159,6 @@ TimeDuration::Resolution()
return TimeDuration::FromTicks(int64_t(sResolution));
}
-struct TimeStampInitialization
-{
- TimeStampInitialization() {
- TimeStamp::Startup();
- }
- ~TimeStampInitialization() {
- TimeStamp::Shutdown();
- }
-};
-
-static TimeStampInitialization initOnce;
static bool gInitialized = false;
nsresult
@@ -192,8 +181,6 @@ TimeStamp::Startup()
sResolutionSigDigs *= 10);
gInitialized = true;
- sFirstTimeStamp = TimeStamp::Now();
- sProcessCreation = TimeStamp();
return NS_OK;
}
diff -up mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp
--- mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp.906754 2013-12-06 03:21:33.000000000 +0100
+++ mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp 2013-12-20 15:58:50.357993430 +0100
@@ -457,18 +457,6 @@ TimeDuration::Resolution()
return TimeDuration::FromTicks(int64_t(sResolution));
}
-struct TimeStampInitialization
-{
- TimeStampInitialization() {
- TimeStamp::Startup();
- }
- ~TimeStampInitialization() {
- TimeStamp::Shutdown();
- }
-};
-
-static TimeStampInitialization initOnce;
-
static bool
HasStableTSC()
{
@@ -534,8 +522,6 @@ TimeStamp::Startup()
InitThresholds();
InitResolution();
- sFirstTimeStamp = TimeStamp::Now();
- sProcessCreation = TimeStamp();
return NS_OK;
}