Skip to content

Commit f82bcf9

Browse files
committed
---
yaml --- r: 64897 b: refs/heads/snap-stage3 c: 4fbd37d h: refs/heads/master i: 64895: 1479eb7 v: v3
1 parent c96ecbf commit f82bcf9

23 files changed

+948
-347
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: 2d28d645422c1617be58c8ca7ad9a457264ca850
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 0a87589b94bc1ca17fdfeb35f5b029762fe678a8
4+
refs/heads/snap-stage3: 4fbd37d4bdabb60e20b6dada36ff23c96e90e482
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/mk/tests.mk

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,16 @@ ifdef CHECK_XFAILS
3434
TESTARGS += --ignored
3535
endif
3636

37-
CTEST_BENCH = --bench
37+
TEST_BENCH = --bench
3838

3939
# Arguments to the cfail/rfail/rpass/bench tests
4040
ifdef CFG_VALGRIND
4141
CTEST_RUNTOOL = --runtool "$(CFG_VALGRIND)"
42-
CTEST_BENCH =
42+
TEST_BENCH =
43+
endif
44+
45+
ifdef NO_BENCH
46+
TEST_BENCH =
4347
endif
4448

4549
# Arguments to the perf tests
@@ -69,12 +73,12 @@ TEST_RATCHET_NOISE_PERCENT=10.0
6973
# Whether to ratchet or merely save benchmarks
7074
ifdef CFG_RATCHET_BENCH
7175
CRATE_TEST_BENCH_ARGS=\
72-
--test $(CTEST_BENCH) \
76+
--test $(TEST_BENCH) \
7377
--ratchet-metrics $(call TEST_RATCHET_FILE,$(1),$(2),$(3),$(4)) \
7478
--ratchet-noise-percent $(TEST_RATCHET_NOISE_PERCENT)
7579
else
7680
CRATE_TEST_BENCH_ARGS=\
77-
--test $(CTEST_BENCH) \
81+
--test $(TEST_BENCH) \
7882
--save-metrics $(call TEST_RATCHET_FILE,$(1),$(2),$(3),$(4))
7983
endif
8084

branches/snap-stage3/src/libextra/arc.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ impl<T:Freeze+Send> Arc<T> {
136136
*/
137137
pub fn unwrap(self) -> T {
138138
let Arc { x: x } = self;
139-
unsafe { x.unwrap() }
139+
x.unwrap()
140140
}
141141
}
142142

@@ -250,7 +250,7 @@ impl<T:Send> MutexArc<T> {
250250
*/
251251
pub fn unwrap(self) -> T {
252252
let MutexArc { x: x } = self;
253-
let inner = unsafe { x.unwrap() };
253+
let inner = x.unwrap();
254254
let MutexArcInner { failed: failed, data: data, _ } = inner;
255255
if failed {
256256
fail!(~"Can't unwrap poisoned MutexArc - another task failed inside!");
@@ -469,7 +469,7 @@ impl<T:Freeze + Send> RWArc<T> {
469469
*/
470470
pub fn unwrap(self) -> T {
471471
let RWArc { x: x, _ } = self;
472-
let inner = unsafe { x.unwrap() };
472+
let inner = x.unwrap();
473473
let RWArcInner { failed: failed, data: data, _ } = inner;
474474
if failed {
475475
fail!(~"Can't unwrap poisoned RWArc - another task failed inside!")

branches/snap-stage3/src/libextra/getopts.rs

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,9 @@ pub fn optflag(name: &str) -> Opt {
140140
return Opt {name: mkname(name), hasarg: No, occur: Optional};
141141
}
142142

143-
/// Create an option that is optional and does not take an argument
143+
/** Create an option that is optional, does not take an argument,
144+
* and may occur multiple times.
145+
*/
144146
pub fn optflagmulti(name: &str) -> Opt {
145147
return Opt {name: mkname(name), hasarg: No, occur: Multi};
146148
}
@@ -369,7 +371,14 @@ fn opt_vals(mm: &Matches, nm: &str) -> ~[Optval] {
369371
};
370372
}
371373

372-
fn opt_val(mm: &Matches, nm: &str) -> Optval { opt_vals(mm, nm)[0].clone() }
374+
fn opt_val(mm: &Matches, nm: &str) -> Option<Optval> {
375+
let vals = opt_vals(mm, nm);
376+
if (vals.is_empty()) {
377+
None
378+
} else {
379+
Some(opt_vals(mm, nm)[0].clone())
380+
}
381+
}
373382

374383
/// Returns true if an option was matched
375384
pub fn opt_present(mm: &Matches, nm: &str) -> bool {
@@ -400,7 +409,10 @@ pub fn opts_present(mm: &Matches, names: &[~str]) -> bool {
400409
* argument
401410
*/
402411
pub fn opt_str(mm: &Matches, nm: &str) -> ~str {
403-
return match opt_val(mm, nm) { Val(s) => s, _ => fail!() };
412+
return match opt_val(mm, nm) {
413+
Some(Val(s)) => s,
414+
_ => fail!()
415+
};
404416
}
405417

406418
/**
@@ -412,7 +424,7 @@ pub fn opt_str(mm: &Matches, nm: &str) -> ~str {
412424
pub fn opts_str(mm: &Matches, names: &[~str]) -> ~str {
413425
for names.iter().advance |nm| {
414426
match opt_val(mm, *nm) {
415-
Val(ref s) => return (*s).clone(),
427+
Some(Val(ref s)) => return (*s).clone(),
416428
_ => ()
417429
}
418430
}
@@ -1318,24 +1330,41 @@ mod tests {
13181330
13191331
#[test]
13201332
fn test_multi() {
1321-
let args = ~[~"-e", ~"foo", ~"--encrypt", ~"foo"];
13221333
let opts = ~[optopt("e"), optopt("encrypt"), optopt("f")];
1323-
let matches = &match getopts(args, opts) {
1334+
1335+
let args_single = ~[~"-e", ~"foo"];
1336+
let matches_single = &match getopts(args_single, opts) {
1337+
result::Ok(m) => m,
1338+
result::Err(_) => fail!()
1339+
};
1340+
assert!(opts_present(matches_single, [~"e"]));
1341+
assert!(opts_present(matches_single, [~"encrypt", ~"e"]));
1342+
assert!(opts_present(matches_single, [~"e", ~"encrypt"]));
1343+
assert!(!opts_present(matches_single, [~"encrypt"]));
1344+
assert!(!opts_present(matches_single, [~"thing"]));
1345+
assert!(!opts_present(matches_single, []));
1346+
1347+
assert_eq!(opts_str(matches_single, [~"e"]), ~"foo");
1348+
assert_eq!(opts_str(matches_single, [~"e", ~"encrypt"]), ~"foo");
1349+
assert_eq!(opts_str(matches_single, [~"encrypt", ~"e"]), ~"foo");
1350+
1351+
let args_both = ~[~"-e", ~"foo", ~"--encrypt", ~"foo"];
1352+
let matches_both = &match getopts(args_both, opts) {
13241353
result::Ok(m) => m,
13251354
result::Err(_) => fail!()
13261355
};
1327-
assert!(opts_present(matches, [~"e"]));
1328-
assert!(opts_present(matches, [~"encrypt"]));
1329-
assert!(opts_present(matches, [~"encrypt", ~"e"]));
1330-
assert!(opts_present(matches, [~"e", ~"encrypt"]));
1331-
assert!(!opts_present(matches, [~"f"]));
1332-
assert!(!opts_present(matches, [~"thing"]));
1333-
assert!(!opts_present(matches, []));
1334-
1335-
assert_eq!(opts_str(matches, [~"e"]), ~"foo");
1336-
assert_eq!(opts_str(matches, [~"encrypt"]), ~"foo");
1337-
assert_eq!(opts_str(matches, [~"e", ~"encrypt"]), ~"foo");
1338-
assert_eq!(opts_str(matches, [~"encrypt", ~"e"]), ~"foo");
1356+
assert!(opts_present(matches_both, [~"e"]));
1357+
assert!(opts_present(matches_both, [~"encrypt"]));
1358+
assert!(opts_present(matches_both, [~"encrypt", ~"e"]));
1359+
assert!(opts_present(matches_both, [~"e", ~"encrypt"]));
1360+
assert!(!opts_present(matches_both, [~"f"]));
1361+
assert!(!opts_present(matches_both, [~"thing"]));
1362+
assert!(!opts_present(matches_both, []));
1363+
1364+
assert_eq!(opts_str(matches_both, [~"e"]), ~"foo");
1365+
assert_eq!(opts_str(matches_both, [~"encrypt"]), ~"foo");
1366+
assert_eq!(opts_str(matches_both, [~"e", ~"encrypt"]), ~"foo");
1367+
assert_eq!(opts_str(matches_both, [~"encrypt", ~"e"]), ~"foo");
13391368
}
13401369
13411370
#[test]

branches/snap-stage3/src/libextra/sync.rs

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,9 @@ impl<Q:Send> Sem<Q> {
130130
impl Sem<()> {
131131
pub fn access<U>(&self, blk: &fn() -> U) -> U {
132132
let mut release = None;
133-
unsafe {
134-
do task::unkillable {
135-
self.acquire();
136-
release = Some(SemRelease(self));
137-
}
133+
do task::unkillable {
134+
self.acquire();
135+
release = Some(SemRelease(self));
138136
}
139137
blk()
140138
}
@@ -153,11 +151,9 @@ impl Sem<~[WaitQueue]> {
153151

154152
pub fn access_waitqueue<U>(&self, blk: &fn() -> U) -> U {
155153
let mut release = None;
156-
unsafe {
157-
do task::unkillable {
158-
self.acquire();
159-
release = Some(SemAndSignalRelease(self));
160-
}
154+
do task::unkillable {
155+
self.acquire();
156+
release = Some(SemAndSignalRelease(self));
161157
}
162158
blk()
163159
}
@@ -294,17 +290,15 @@ impl<'self> Condvar<'self> {
294290
#[unsafe_destructor]
295291
impl<'self> Drop for CondvarReacquire<'self> {
296292
fn drop(&self) {
297-
unsafe {
298-
// Needs to succeed, instead of itself dying.
299-
do task::unkillable {
300-
match self.order {
301-
Just(lock) => do lock.access {
302-
self.sem.acquire();
303-
},
304-
Nothing => {
305-
self.sem.acquire();
306-
},
307-
}
293+
// Needs to succeed, instead of itself dying.
294+
do task::unkillable {
295+
match self.order {
296+
Just(lock) => do lock.access {
297+
self.sem.acquire();
298+
},
299+
Nothing => {
300+
self.sem.acquire();
301+
},
308302
}
309303
}
310304
}
@@ -644,14 +638,12 @@ impl RWLock {
644638
// Implementation slightly different from the slicker 'write's above.
645639
// The exit path is conditional on whether the caller downgrades.
646640
let mut _release = None;
647-
unsafe {
648-
do task::unkillable {
649-
(&self.order_lock).acquire();
650-
(&self.access_lock).acquire();
651-
(&self.order_lock).release();
652-
}
653-
_release = Some(RWLockReleaseDowngrade(self));
641+
do task::unkillable {
642+
(&self.order_lock).acquire();
643+
(&self.access_lock).acquire();
644+
(&self.order_lock).release();
654645
}
646+
_release = Some(RWLockReleaseDowngrade(self));
655647
blk(RWLockWriteMode { lock: self })
656648
}
657649

0 commit comments

Comments
 (0)