Skip to content

Commit 996c090

Browse files
committed
---
yaml --- r: 27982 b: refs/heads/try c: fe25667 h: refs/heads/master v: v3
1 parent b61c7e2 commit 996c090

File tree

3 files changed

+10
-24
lines changed

3 files changed

+10
-24
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
5-
refs/heads/try: 20773f33f522ac7686e0ac7271332646e9944938
5+
refs/heads/try: fe2566777dae60b21fbea9173e6f31881da78ffb
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df

branches/try/src/libcore/pipes.rs

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -666,12 +666,10 @@ fn select2<A: send, Ab: send, B: send, Bb: send>(
666666
{
667667
let i = wait_many([a.header(), b.header()]/_);
668668

669-
unsafe {
670-
match i {
671-
0 => Left((try_recv(a), b)),
672-
1 => Right((a, try_recv(b))),
673-
_ => fail ~"select2 return an invalid packet"
674-
}
669+
match i {
670+
0 => Left((try_recv(a), b)),
671+
1 => Right((a, try_recv(b))),
672+
_ => fail ~"select2 return an invalid packet"
675673
}
676674
}
677675

@@ -706,17 +704,9 @@ fn select<T: send, Tb: send>(+endpoints: ~[recv_packet_buffered<T, Tb>])
706704
-> (uint, option<T>, ~[recv_packet_buffered<T, Tb>])
707705
{
708706
let ready = wait_many(endpoints.map(|p| p.header()));
709-
let mut remaining = ~[];
710-
let mut result = none;
711-
do vec::consume(endpoints) |i, p| {
712-
if i == ready {
713-
result = try_recv(p);
714-
}
715-
else {
716-
vec::push(remaining, p);
717-
}
718-
}
719-
707+
let mut remaining = endpoints;
708+
let port = vec::swap_remove(remaining, ready);
709+
let result = try_recv(port);
720710
(ready, result, remaining)
721711
}
722712

@@ -1054,12 +1044,7 @@ struct PortSet<T: send> : recv<T> {
10541044
}
10551045
none => {
10561046
// Remove this port.
1057-
let mut ports_ = ~[];
1058-
ports <-> ports_;
1059-
vec::consume(ports_,
1060-
|j, x| if i != j {
1061-
vec::push(ports, x)
1062-
});
1047+
let _ = vec::swap_remove(ports, i);
10631048
}
10641049
}
10651050
}

branches/try/src/libcore/vec.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export rsplitn;
3636
export shift;
3737
export unshift;
3838
export pop;
39+
export swap_remove;
3940
export push, push_all, push_all_move;
4041
export grow;
4142
export grow_fn;

0 commit comments

Comments
 (0)