Skip to content

Commit ebb28c2

Browse files
committed
test: Fix tests and the pipe compiler
1 parent 306f81f commit ebb28c2

27 files changed

+151
-126
lines changed

src/libcore/repr.rs

Lines changed: 19 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -448,10 +448,15 @@ impl TyVisitor for ReprVisitor {
448448
true
449449
}
450450

451-
fn visit_enter_enum(&self, _n_variants: uint,
451+
fn visit_enter_enum(&self,
452+
_n_variants: uint,
452453
get_disr: extern unsafe fn(ptr: *Opaque) -> int,
453-
_sz: uint, _align: uint) -> bool {
454-
let disr = unsafe { get_disr(transmute(self.ptr)) };
454+
_sz: uint,
455+
_align: uint) -> bool {
456+
let var_stk: &mut ~[VariantState] = self.var_stk;
457+
let disr = unsafe {
458+
get_disr(transmute(*self.ptr))
459+
};
455460
self.var_stk.push(SearchingFor(disr));
456461
true
457462
}
@@ -484,31 +489,12 @@ impl TyVisitor for ReprVisitor {
484489
true
485490
}
486491

487-
<<<<<<< HEAD
488-
fn visit_enum_variant_field(&self, i: uint, _offset: uint, inner: *TyDesc) -> bool {
489-
match self.var_stk[vec::uniq_len(&const self.var_stk) - 1] {
490-
=======
491-
#[cfg(stage0)]
492-
fn visit_enum_variant_field(&self, i: uint, inner: *TyDesc) -> bool {
493-
match self.var_stk[vec::uniq_len(&const *self.var_stk) - 1] {
494-
Degenerate | TagMatch => {
495-
if i != 0 {
496-
self.writer.write_str(", ");
497-
}
498-
if ! self.visit_inner(inner) {
499-
return false;
500-
}
501-
}
502-
TagMismatch => ()
503-
}
504-
true
505-
}
506-
507-
#[cfg(not(stage0))]
508-
fn visit_enum_variant_field(&self, i: uint, _: uint, inner: *TyDesc)
492+
fn visit_enum_variant_field(&self,
493+
i: uint,
494+
_offset: uint,
495+
inner: *TyDesc)
509496
-> bool {
510-
match self.var_stk[vec::uniq_len(&const *self.var_stk) - 1] {
511-
>>>>>>> libcore: Remove mutable fields from repr
497+
match self.var_stk[vec::uniq_len(&const self.var_stk) - 1] {
512498
Matched => {
513499
if i != 0 {
514500
self.writer.write_str(", ");
@@ -522,26 +508,6 @@ impl TyVisitor for ReprVisitor {
522508
true
523509
}
524510

525-
<<<<<<< HEAD
526-
=======
527-
#[cfg(stage0)]
528-
fn visit_leave_enum_variant(&self, _variant: uint,
529-
_disr_val: int,
530-
n_fields: uint,
531-
_name: &str) -> bool {
532-
match self.var_stk[vec::uniq_len(&const *self.var_stk) - 1] {
533-
Degenerate | TagMatch => {
534-
if n_fields > 0 {
535-
self.writer.write_char(')');
536-
}
537-
}
538-
TagMismatch => ()
539-
}
540-
true
541-
}
542-
543-
#[cfg(not(stage0))]
544-
>>>>>>> libcore: Remove mutable fields from repr
545511
fn visit_leave_enum_variant(&self, _variant: uint,
546512
_disr_val: int,
547513
n_fields: uint,
@@ -557,9 +523,13 @@ impl TyVisitor for ReprVisitor {
557523
true
558524
}
559525

560-
fn visit_leave_enum(&self, _n_variants: uint,
526+
fn visit_leave_enum(&self,
527+
_n_variants: uint,
561528
_get_disr: extern unsafe fn(ptr: *Opaque) -> int,
562-
_sz: uint, _align: uint) -> bool {
529+
_sz: uint,
530+
_align: uint)
531+
-> bool {
532+
let var_stk: &mut ~[VariantState] = self.var_stk;
563533
match self.var_stk.pop() {
564534
SearchingFor(*) => fail!(~"enum value matched no variant"),
565535
_ => true

src/libcore/task/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,14 @@ pub impl TaskBuilder {
230230
/// the child.
231231
fn supervised(&mut self) {
232232
self.opts.supervised = true;
233+
self.opts.linked = false;
233234
}
234235
235236
/// Link the child task's and parent task's failures. If either fails, the
236237
/// other will be killed.
237238
fn linked(&mut self) {
238239
self.opts.linked = true;
240+
self.opts.supervised = false;
239241
}
240242
241243
/**

src/libsyntax/ext/pipes/pipec.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ impl gen_send for message {
6464

6565
let mut body = ~"{\n";
6666
body += fmt!("use super::%s;\n", name);
67+
body += ~"let mut pipe = pipe;\n";
6768

6869
if this.proto.is_bounded() {
6970
let (sp, rp) = match (this.dir, next.dir) {
@@ -73,12 +74,12 @@ impl gen_send for message {
7374
(recv, recv) => (~"c", ~"s")
7475
};
7576

76-
body += ~"let b = pipe.reuse_buffer();\n";
77+
body += ~"let mut b = pipe.reuse_buffer();\n";
7778
body += fmt!("let %s = ::core::pipes::SendPacketBuffered(\
78-
&(b.buffer.data.%s));\n",
79+
&mut (b.buffer.data.%s));\n",
7980
sp, next.name);
8081
body += fmt!("let %s = ::core::pipes::RecvPacketBuffered(\
81-
&(b.buffer.data.%s));\n",
82+
&mut (b.buffer.data.%s));\n",
8283
rp, next.name);
8384
}
8485
else {
@@ -366,7 +367,7 @@ impl gen_init for protocol {
366367
fmt!("data.%s.set_buffer(buffer)",
367368
s.name))),
368369
ext_cx.parse_expr(fmt!(
369-
"::core::ptr::to_unsafe_ptr(&(data.%s))",
370+
"::core::ptr::to_mut_unsafe_ptr(&mut (data.%s))",
370371
self.states[0].name))));
371372
372373
quote_expr!({

src/test/bench/core-map.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ fn main() {
103103
let mut rand = vec::with_capacity(n_keys);
104104

105105
{
106-
let rng = core::rand::IsaacRng::new_seeded([1, 1, 1, 1, 1, 1, 1]);
106+
let mut rng = core::rand::IsaacRng::new_seeded([1, 1, 1, 1, 1, 1, 1]);
107107
let mut set = HashSet::new();
108108
while set.len() != n_keys {
109109
let next = rng.next() as uint;

src/test/bench/core-set.rs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,13 @@ fn timed(result: &mut float, op: &fn()) {
3131
}
3232

3333
pub impl Results {
34-
fn bench_int<T:Set<uint>, R: rand::Rng>(&mut self, rng: &R, num_keys: uint,
35-
rand_cap: uint, f: &fn() -> T) {
34+
fn bench_int<T:Set<uint>,
35+
R: rand::Rng>(
36+
&mut self,
37+
rng: &mut R,
38+
num_keys: uint,
39+
rand_cap: uint,
40+
f: &fn() -> T) {
3641
{
3742
let mut set = f();
3843
do timed(&mut self.sequential_ints) {
@@ -69,8 +74,12 @@ pub impl Results {
6974
}
7075
}
7176

72-
fn bench_str<T:Set<~str>, R: rand::Rng>(&mut self, rng: &R, num_keys: uint,
73-
f: &fn() -> T) {
77+
fn bench_str<T:Set<~str>,
78+
R:rand::Rng>(
79+
&mut self,
80+
rng: &mut R,
81+
num_keys: uint,
82+
f: &fn() -> T) {
7483
{
7584
let mut set = f();
7685
do timed(&mut self.sequential_strings) {
@@ -155,25 +164,25 @@ fn main() {
155164
let max = 200000;
156165

157166
{
158-
let rng = rand::IsaacRng::new_seeded(seed);
167+
let mut rng = rand::IsaacRng::new_seeded(seed);
159168
let mut results = empty_results();
160-
results.bench_int(&rng, num_keys, max, || HashSet::new::<uint>());
161-
results.bench_str(&rng, num_keys, || HashSet::new::<~str>());
169+
results.bench_int(&mut rng, num_keys, max, || HashSet::new::<uint>());
170+
results.bench_str(&mut rng, num_keys, || HashSet::new::<~str>());
162171
write_results("core::hashmap::HashSet", &results);
163172
}
164173

165174
{
166-
let rng = rand::IsaacRng::new_seeded(seed);
175+
let mut rng = rand::IsaacRng::new_seeded(seed);
167176
let mut results = empty_results();
168-
results.bench_int(&rng, num_keys, max, || TreeSet::new::<uint>());
169-
results.bench_str(&rng, num_keys, || TreeSet::new::<~str>());
177+
results.bench_int(&mut rng, num_keys, max, || TreeSet::new::<uint>());
178+
results.bench_str(&mut rng, num_keys, || TreeSet::new::<~str>());
170179
write_results("std::treemap::TreeSet", &results);
171180
}
172181

173182
{
174-
let rng = rand::IsaacRng::new_seeded(seed);
183+
let mut rng = rand::IsaacRng::new_seeded(seed);
175184
let mut results = empty_results();
176-
results.bench_int(&rng, num_keys, max, || BitvSet::new());
185+
results.bench_int(&mut rng, num_keys, max, || BitvSet::new());
177186
write_results("std::bitv::BitvSet", &results);
178187
}
179188
}

src/test/bench/core-std.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,15 @@ fn main() {
3333
fn maybe_run_test(argv: &[~str], name: ~str, test: &fn()) {
3434
let mut run_test = false;
3535

36-
if os::getenv(~"RUST_BENCH").is_some() { run_test = true }
37-
else if argv.len() > 0 {
36+
if os::getenv(~"RUST_BENCH").is_some() {
37+
run_test = true
38+
} else if argv.len() > 0 {
3839
run_test = argv.contains(&~"all") || argv.contains(&name)
3940
}
4041

41-
if !run_test { return }
42+
if !run_test {
43+
return
44+
}
4245

4346
let start = precise_time_s();
4447
test();
@@ -69,7 +72,7 @@ fn read_line() {
6972
}
7073

7174
fn vec_plus() {
72-
let r = rand::rng();
75+
let mut r = rand::rng();
7376

7477
let mut v = ~[];
7578
let mut i = 0;
@@ -86,7 +89,7 @@ fn vec_plus() {
8689
}
8790

8891
fn vec_append() {
89-
let r = rand::rng();
92+
let mut r = rand::rng();
9093

9194
let mut v = ~[];
9295
let mut i = 0;
@@ -103,7 +106,7 @@ fn vec_append() {
103106
}
104107

105108
fn vec_push_all() {
106-
let r = rand::rng();
109+
let mut r = rand::rng();
107110

108111
let mut v = ~[];
109112
for uint::range(0, 1500) |i| {

src/test/bench/graph500-bfs.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,20 @@ type graph = ~[~[node_id]];
3232
type bfs_result = ~[node_id];
3333

3434
fn make_edges(scale: uint, edgefactor: uint) -> ~[(node_id, node_id)] {
35-
let r = rand::XorShiftRng::new();
36-
37-
fn choose_edge<R: rand::Rng>(i: node_id, j: node_id, scale: uint, r: &R)
38-
-> (node_id, node_id) {
35+
let mut r = rand::XorShiftRng::new();
3936

37+
fn choose_edge<R: rand::Rng>(i: node_id,
38+
j: node_id,
39+
scale: uint,
40+
r: &mut R)
41+
-> (node_id, node_id) {
4042
let A = 0.57;
4143
let B = 0.19;
4244
let C = 0.19;
4345

4446
if scale == 0u {
4547
(i, j)
46-
}
47-
else {
48+
} else {
4849
let i = i * 2i64;
4950
let j = j * 2i64;
5051
let scale = scale - 1u;
@@ -73,7 +74,7 @@ fn make_edges(scale: uint, edgefactor: uint) -> ~[(node_id, node_id)] {
7374
}
7475

7576
do vec::from_fn((1u << scale) * edgefactor) |_i| {
76-
choose_edge(0i64, 0i64, scale, &r)
77+
choose_edge(0i64, 0i64, scale, &mut r)
7778
}
7879
}
7980

@@ -103,7 +104,7 @@ fn make_graph(N: uint, edges: ~[(node_id, node_id)]) -> graph {
103104

104105
fn gen_search_keys(graph: &[~[node_id]], n: uint) -> ~[node_id] {
105106
let mut keys = HashSet::new();
106-
let r = rand::rng();
107+
let mut r = rand::rng();
107108

108109
while keys.len() < n {
109110
let k = r.gen_uint_range(0u, graph.len());

src/test/bench/msgsend-pipes-shared.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,15 @@ fn run(args: &[~str]) {
6565
let mut worker_results = ~[];
6666
for uint::range(0, workers) |_i| {
6767
let to_child = to_child.clone();
68-
do task::task().future_result(|+r| {
69-
worker_results.push(r);
70-
}).spawn || {
68+
let mut builder = task::task();
69+
builder.future_result(|r| worker_results.push(r));
70+
do builder.spawn {
7171
for uint::range(0, size / workers) |_i| {
7272
//error!("worker %?: sending %? bytes", i, num_bytes);
7373
to_child.send(bytes(num_bytes));
7474
}
7575
//error!("worker %? exiting", i);
76-
};
76+
}
7777
}
7878
do task::spawn || {
7979
server(&from_parent, &to_parent);

src/test/bench/msgsend-pipes.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ fn run(args: &[~str]) {
6262
for uint::range(0, workers) |_i| {
6363
let (from_parent_, to_child) = stream();
6464
from_parent.add(from_parent_);
65-
do task::task().future_result(|+r| {
66-
worker_results.push(r);
67-
}).spawn || {
65+
let mut builder = task::task();
66+
builder.future_result(|r| worker_results.push(r));
67+
do builder.spawn {
6868
for uint::range(0, size / workers) |_i| {
6969
//error!("worker %?: sending %? bytes", i, num_bytes);
7070
to_child.send(bytes(num_bytes));

src/test/bench/msgsend-ring-mutex-arcs.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ fn main() {
103103
thread_ring(0, msg_per_task, num_chan.take(), num_port);
104104

105105
// synchronize
106-
for futures.each |f| { f.get() };
106+
for futures.each_mut |f| {
107+
f.get()
108+
}
107109

108110
let stop = time::precise_time_s();
109111

src/test/bench/msgsend-ring-pipes.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,9 @@ fn main() {
9696
thread_ring(0, msg_per_task, num_chan.take(), num_port);
9797

9898
// synchronize
99-
for futures.each |f| { f.get() };
99+
for futures.each_mut |f| {
100+
let _ = f.get();
101+
}
100102

101103
let stop = time::precise_time_s();
102104

src/test/bench/msgsend-ring-rw-arcs.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,9 @@ fn main() {
104104
thread_ring(0, msg_per_task, num_chan.take(), num_port);
105105

106106
// synchronize
107-
for futures.each |f| { f.get() };
107+
for futures.each_mut |f| {
108+
let _ = f.get();
109+
}
108110

109111
let stop = time::precise_time_s();
110112

0 commit comments

Comments
 (0)