summaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-11-25 11:41:20 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-11-25 11:41:20 +0000
commit17968f6e8daa42a66720952e848b9080861bc358 (patch)
tree6fb6bd802924ca3e9aba2cb051a21eee53579efa /staging_vespalib
parent2b71095df8a5f027d89407b4142c82930c5d720b (diff)
Need to use a volatile to ensure compiler will always generate correct code independent of inlining and optimizations.
Diffstat (limited to 'staging_vespalib')
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/clock.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/clock.h6
2 files changed, 4 insertions, 4 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.cpp b/staging_vespalib/src/vespa/vespalib/util/clock.cpp
index 543a475480b..68929d0377c 100644
--- a/staging_vespalib/src/vespa/vespalib/util/clock.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/clock.cpp
@@ -25,7 +25,7 @@ Clock::~Clock()
void Clock::setTime() const
{
- _timeNS = fastos::ClockSteady::now();
+ _timeNS = (fastos::ClockSteady::now() - fastos::SteadyTimeStamp::ZERO);
}
void Clock::Run(FastOS_ThreadInterface *thread, void *arguments)
diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.h b/staging_vespalib/src/vespa/vespalib/util/clock.h
index 43cea258d23..7b0633a2b4f 100644
--- a/staging_vespalib/src/vespa/vespalib/util/clock.h
+++ b/staging_vespalib/src/vespa/vespalib/util/clock.h
@@ -20,7 +20,7 @@ private:
Clock(const Clock &);
Clock & operator = (const Clock &);
- mutable fastos::SteadyTimeStamp _timeNS;
+ mutable volatile int64_t _timeNS;
int _timePeriodMS;
std::mutex _lock;
std::condition_variable _cond;
@@ -39,9 +39,9 @@ public:
if (!_running) {
setTime();
}
- return _timeNS;
+ return getTimeNSAssumeRunning();
}
- fastos::SteadyTimeStamp getTimeNSAssumeRunning() const { return _timeNS; }
+ fastos::SteadyTimeStamp getTimeNSAssumeRunning() const { return fastos::SteadyTimeStamp(_timeNS); }
void stop();
};