Skip to content

Commit 2b89cdd

Browse files
committed
Inline fn reseed_and_generate
1 parent e16b000 commit 2b89cdd

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

src/rngs/thread.rs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,34 +48,28 @@ struct ReseedingCore {
4848
impl Generator for ReseedingCore {
4949
type Output = Results;
5050

51+
#[inline(always)]
5152
fn generate(&mut self, results: &mut Results) {
5253
if self.inner.get_block_pos() >= RESEED_BLOCK_THRESHOLD {
53-
// We get better performance by not calling only `reseed` here
54-
// and continuing with the rest of the function, but by directly
55-
// returning from a non-inlined function.
56-
return self.reseed_and_generate(results);
54+
trace!("Reseeding RNG (periodic reseed)");
55+
56+
if let Err(e) = self.reseed() {
57+
warn!("Reseeding RNG failed: {}", e);
58+
let _ = e;
59+
}
60+
61+
self.inner.generate(results);
5762
}
5863
self.inner.generate(results);
5964
}
6065
}
6166

6267
impl ReseedingCore {
6368
/// Reseed the internal PRNG.
69+
#[cold]
6470
fn reseed(&mut self) -> Result<(), SysError> {
6571
Core::try_from_rng(&mut SysRng).map(|result| self.inner = result)
6672
}
67-
68-
#[inline(never)]
69-
fn reseed_and_generate(&mut self, results: &mut Results) {
70-
trace!("Reseeding RNG (periodic reseed)");
71-
72-
if let Err(e) = self.reseed() {
73-
warn!("Reseeding RNG failed: {}", e);
74-
let _ = e;
75-
}
76-
77-
self.inner.generate(results);
78-
}
7973
}
8074

8175
/// A reference to the thread-local generator

0 commit comments

Comments
 (0)