Skip to content

Commit 284006f

Browse files
Daniel Pattersonbrson
authored andcommitted
---
yaml --- r: 22241 b: refs/heads/snap-stage3 c: c7354e6 h: refs/heads/master i: 22239: 6e4f26e v: v3
1 parent 1c2b199 commit 284006f

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: e430a699f2c60890d9b86069fd0c68a70ece7120
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 4d30b346733f345711a55504ef8abc81152c97a2
4+
refs/heads/snap-stage3: c7354e6c104ce88ef862501e6b65d0620314f849
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libcore/rand.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,33 @@ pub fn seeded_xorshift(x: u32, y: u32, z: u32, w: u32) -> Rng {
308308
{mut x: x, mut y: y, mut z: z, mut w: w} as Rng
309309
}
310310

311+
312+
// used to make space in TLS for a random number generator
313+
fn tls_rng_state(+_v: @RandRes) {}
314+
315+
/**
316+
* Gives back a lazily initialized task-local random number generator,
317+
* seeded by the system. Intended to be used in method chaining style, ie
318+
* task_rng().gen_int().
319+
*/
320+
pub fn task_rng() -> Rng {
321+
let r : Option<@RandRes>;
322+
unsafe {
323+
r = task::local_data::local_data_get(tls_rng_state);
324+
}
325+
match r {
326+
None => {
327+
let rng = @RandRes(rustrt::rand_new());
328+
unsafe {
329+
task::local_data::local_data_set(tls_rng_state, rng);
330+
}
331+
rng as Rng
332+
}
333+
Some(rng) => rng as Rng
334+
}
335+
}
336+
337+
311338
#[cfg(test)]
312339
pub mod tests {
313340
#[test]

0 commit comments

Comments
 (0)