diff --git a/tokio/src/time/driver/wheel/level.rs b/tokio/src/time/driver/wheel/level.rs index 7fd2266bb8e..878754177b9 100644 --- a/tokio/src/time/driver/wheel/level.rs +++ b/tokio/src/time/driver/wheel/level.rs @@ -143,8 +143,9 @@ impl Level { let level_range = level_range(self.level); let slot_range = slot_range(self.level); - // TODO: This can probably be simplified w/ power of 2 math - let level_start = now - (now % level_range); + // Compute the start date of the current level by masking the low bits + // of `now` (`level_range` is a power of 2). + let level_start = now & !(level_range - 1); let mut deadline = level_start + slot as u64 * slot_range; if deadline <= now {