Skip to content

Commit 0e58152

Browse files
toffalettibrson
authored andcommitted
---
yaml --- r: 95677 b: refs/heads/dist-snap c: 1916732 h: refs/heads/master i: 95675: 84d88a3 v: v3
1 parent abb6e9f commit 0e58152

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: c274a6888410ce3e357e014568b43310ed787d36
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: 89c91208a7e1e2a5ce77dcb2032601393d861128
9+
refs/heads/dist-snap: 1916732cfd7efa916da3877ca6e823d18221b04b
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/libstd/rt/mpsc_queue.rs

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -34,24 +34,20 @@ use ptr::{mut_null, to_mut_unsafe_ptr};
3434
use cast;
3535
use option::*;
3636
use clone::Clone;
37-
use default::Default;
3837
use kinds::Send;
39-
use fmt;
4038

4139
struct Node<T> {
4240
next: AtomicPtr<Node<T>>,
4341
value: Option<T>,
4442
}
4543

4644
impl<T> Node<T> {
47-
fn new(value: T) -> Node<T> {
48-
Node{next: AtomicPtr::new(mut_null()), value: Some(value)}
45+
fn empty() -> Node<T> {
46+
Node{next: AtomicPtr::new(mut_null()), value: None}
4947
}
50-
}
5148

52-
impl<T> Default for Node<T> {
53-
fn default() -> Node<T> {
54-
Node{next: AtomicPtr::new(mut_null()), value: None}
49+
fn with_value(value: T) -> Node<T> {
50+
Node{next: AtomicPtr::new(mut_null()), value: Some(value)}
5551
}
5652
}
5753

@@ -77,27 +73,23 @@ impl<T: Send> Clone for Queue<T> {
7773
}
7874
}
7975

80-
impl<T: Send> fmt::Default for Queue<T> {
81-
fn fmt(value: &Queue<T>, f: &mut fmt::Formatter) {
82-
write!(f.buf, "Queue({})", value.state.get());
83-
}
84-
}
85-
8676
impl<T: Send> State<T> {
8777
pub fn new() -> State<T> {
88-
let mut state = State {
78+
State{
8979
pad0: [0, ..64],
9080
head: AtomicPtr::new(mut_null()),
9181
pad1: [0, ..64],
92-
stub: Default::default(),
82+
stub: Node::<T>::empty(),
9383
pad2: [0, ..64],
9484
tail: mut_null(),
9585
pad3: [0, ..64],
96-
};
97-
let stub = state.get_stub_unsafe();
98-
state.head.store(stub, Relaxed);
99-
state.tail = stub;
100-
state
86+
}
87+
}
88+
89+
fn init(&mut self) {
90+
let stub = self.get_stub_unsafe();
91+
self.head.store(stub, Relaxed);
92+
self.tail = stub;
10193
}
10294

10395
fn get_stub_unsafe(&mut self) -> *mut Node<T> {
@@ -106,7 +98,7 @@ impl<T: Send> State<T> {
10698

10799
fn push(&mut self, value: T) {
108100
unsafe {
109-
let node = cast::transmute(~Node::new(value));
101+
let node = cast::transmute(~Node::with_value(value));
110102
self.push_node(node);
111103
}
112104
}
@@ -155,7 +147,11 @@ impl<T: Send> State<T> {
155147

156148
impl<T: Send> Queue<T> {
157149
pub fn new() -> Queue<T> {
158-
Queue{state: UnsafeArc::new(State::new())}
150+
unsafe {
151+
let mut q = Queue{state: UnsafeArc::new(State::new())};
152+
(*q.state.get()).init();
153+
q
154+
}
159155
}
160156

161157
pub fn push(&mut self, value: T) {

0 commit comments

Comments
 (0)