Skip to content

Commit 96bf28f

Browse files
committed
---
yaml --- r: 95746 b: refs/heads/dist-snap c: 13e5ce3 h: refs/heads/master v: v3
1 parent ff0a2e1 commit 96bf28f

File tree

3 files changed

+51
-58
lines changed

3 files changed

+51
-58
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: e203f30bc743ff3de271d8db80acd21991e903df
9+
refs/heads/dist-snap: 13e5ce337f96241acf941316062d12e12e5f082b
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/libsyntax/parse/parser.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,8 @@ pub fn Parser(sess: @mut ParseSess,
309309
quote_depth: @mut 0,
310310
obsolete_set: @mut HashSet::new(),
311311
mod_path_stack: @mut ~[],
312-
open_braces: @mut ~[]
312+
open_braces: @mut ~[],
313+
non_copyable: util::NonCopyable
313314
}
314315
}
315316

@@ -339,13 +340,9 @@ pub struct Parser {
339340
/// Used to determine the path to externally loaded source files
340341
mod_path_stack: @mut ~[@str],
341342
/// Stack of spans of open delimiters. Used for error message.
342-
open_braces: @mut ~[Span]
343-
}
344-
345-
#[unsafe_destructor]
346-
impl Drop for Parser {
343+
open_braces: @mut ~[Span],
347344
/* do not copy the parser; its state is tied to outside state */
348-
fn drop(&mut self) {}
345+
priv non_copyable: util::NonCopyable
349346
}
350347

351348
fn is_plain_ident_or_underscore(t: &token::Token) -> bool {

branches/dist-snap/src/test/bench/shootout-binarytrees.rs

Lines changed: 46 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -9,81 +9,77 @@
99
// except according to those terms.
1010

1111
extern mod extra;
12+
13+
use std::iter::range_step;
1214
use extra::arena::Arena;
15+
use extra::future::Future;
1316

1417
enum Tree<'self> {
1518
Nil,
16-
Node(&'self Tree<'self>, &'self Tree<'self>, int),
19+
Node(&'self Tree<'self>, &'self Tree<'self>, int)
1720
}
1821

1922
fn item_check(t: &Tree) -> int {
2023
match *t {
21-
Nil => { return 0; }
22-
Node(left, right, item) => {
23-
return item + item_check(left) - item_check(right);
24-
}
24+
Nil => 0,
25+
Node(l, r, i) => i + item_check(l) - item_check(r)
2526
}
2627
}
2728

28-
fn bottom_up_tree<'r>(arena: &'r Arena, item: int, depth: int)
29-
-> &'r Tree<'r> {
29+
fn bottom_up_tree<'r>(arena: &'r Arena, item: int, depth: int) -> &'r Tree<'r> {
3030
if depth > 0 {
31-
return arena.alloc(
32-
|| Node(bottom_up_tree(arena, 2 * item - 1, depth - 1),
33-
bottom_up_tree(arena, 2 * item, depth - 1),
34-
item));
35-
}
36-
return arena.alloc(|| Nil);
31+
do arena.alloc {
32+
Node(bottom_up_tree(arena, 2 * item - 1, depth - 1),
33+
bottom_up_tree(arena, 2 * item, depth - 1),
34+
item)
35+
}
36+
} else {arena.alloc(|| Nil)}
3737
}
3838

3939
fn main() {
40-
use std::os;
41-
use std::int;
4240
let args = std::os::args();
43-
let args = if os::getenv("RUST_BENCH").is_some() {
44-
~[~"", ~"17"]
41+
let n = if std::os::getenv("RUST_BENCH").is_some() {
42+
17
4543
} else if args.len() <= 1u {
46-
~[~"", ~"8"]
44+
8
4745
} else {
48-
args
46+
from_str(args[1]).unwrap()
4947
};
50-
51-
let n = from_str::<int>(args[1]).unwrap();
5248
let min_depth = 4;
53-
let mut max_depth;
54-
if min_depth + 2 > n {
55-
max_depth = min_depth + 2;
56-
} else {
57-
max_depth = n;
58-
}
49+
let max_depth = if min_depth + 2 > n {min_depth + 2} else {n};
5950

60-
let stretch_arena = Arena::new();
61-
let stretch_depth = max_depth + 1;
62-
let stretch_tree = bottom_up_tree(&stretch_arena, 0, stretch_depth);
51+
{
52+
let arena = Arena::new();
53+
let depth = max_depth + 1;
54+
let tree = bottom_up_tree(&arena, 0, depth);
6355

64-
println!("stretch tree of depth {}\t check: {}",
65-
stretch_depth,
66-
item_check(stretch_tree));
56+
println!("stretch tree of depth {}\t check: {}",
57+
depth, item_check(tree));
58+
}
6759

6860
let long_lived_arena = Arena::new();
6961
let long_lived_tree = bottom_up_tree(&long_lived_arena, 0, max_depth);
70-
let mut depth = min_depth;
71-
while depth <= max_depth {
72-
let iterations = int::pow(2, (max_depth - depth + min_depth) as uint);
73-
let mut chk = 0;
74-
let mut i = 1;
75-
while i <= iterations {
76-
let mut temp_tree = bottom_up_tree(&long_lived_arena, i, depth);
77-
chk += item_check(temp_tree);
78-
temp_tree = bottom_up_tree(&long_lived_arena, -i, depth);
79-
chk += item_check(temp_tree);
80-
i += 1;
81-
}
82-
println!("{}\t trees of depth {}\t check: {}",
83-
iterations * 2, depth, chk);
84-
depth += 2;
62+
63+
let mut messages = range_step(min_depth, max_depth + 1, 2).map(|depth| {
64+
use std::int::pow;
65+
let iterations = pow(2, (max_depth - depth + min_depth) as uint);
66+
do Future::spawn {
67+
let mut chk = 0;
68+
for i in range(1, iterations + 1) {
69+
let arena = Arena::new();
70+
let a = bottom_up_tree(&arena, i, depth);
71+
let b = bottom_up_tree(&arena, -i, depth);
72+
chk += item_check(a) + item_check(b);
73+
}
74+
format!("{}\t trees of depth {}\t check: {}",
75+
iterations * 2, depth, chk)
76+
}
77+
}).to_owned_vec();
78+
79+
for message in messages.mut_iter() {
80+
println(*message.get_ref());
8581
}
82+
8683
println!("long lived tree of depth {}\t check: {}",
87-
max_depth,
88-
item_check(long_lived_tree));
84+
max_depth, item_check(long_lived_tree));
8985
}

0 commit comments

Comments
 (0)