about summary refs log tree commit diff
path: root/src/libstd/sys/windows
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-01-08 11:30:19 +0000
committerbors <bors@rust-lang.org>2019-01-08 11:30:19 +0000
commit2f19f8cec96d96d83b393fbbdd61204b87d423e6 (patch)
treeae5078862bbd938ef0fc6f1d820a4174f246b22a /src/libstd/sys/windows
parent7ad470c0a64ed0801708cee6657e82be097a29ac (diff)
parent255a3f3e183150e30d411628d5996bd3a183bd6f (diff)
downloadrust-2f19f8cec96d96d83b393fbbdd61204b87d423e6.tar.gz
rust-2f19f8cec96d96d83b393fbbdd61204b87d423e6.zip
Auto merge of #56988 - alexcrichton:monotonic-instant, r=sfackler
std: Force `Instant::now()` to be monotonic

This commit is an attempt to force `Instant::now` to be monotonic
through any means possible. We tried relying on OS/hardware/clock
implementations, but those seem buggy enough that we can't rely on them
in practice. This commit implements the same hammer Firefox recently
implemented (noted in #56612) which is to just keep whatever the lastest
`Instant::now()` return value was in memory, returning that instead of
the OS looks like it's moving backwards.

Closes #48514
Closes #49281
cc #51648
cc #56560
Closes #56612
Closes #56940
Diffstat (limited to 'src/libstd/sys/windows')
-rw-r--r--src/libstd/sys/windows/time.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libstd/sys/windows/time.rs b/src/libstd/sys/windows/time.rs
index 60c96959186..8e8e9195cf4 100644
--- a/src/libstd/sys/windows/time.rs
+++ b/src/libstd/sys/windows/time.rs
@@ -40,6 +40,14 @@ impl Instant {
         t
     }
 
+    pub fn actually_monotonic() -> bool {
+        false
+    }
+
+    pub const fn zero() -> Instant {
+        Instant { t: 0 }
+    }
+
     pub fn sub_instant(&self, other: &Instant) -> Duration {
         // Values which are +- 1 need to be considered as basically the same
         // units in time due to various measurement oddities, according to