Skip to content

Commit 6df11fa

Browse files
committed
---
yaml --- r: 22659 b: refs/heads/master c: 81f1081 h: refs/heads/master i: 22657: 78272a7 22655: 3da9029 v: v3
1 parent 416fc0d commit 6df11fa

File tree

16 files changed

+45
-80
lines changed

16 files changed

+45
-80
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: d8c75cfbe7951f62296b4c9311811a0f414ab0f7
2+
refs/heads/master: 81f108154a9b419427363484a35423462abdb1b5
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/libcore/comm.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -474,9 +474,7 @@ fn test_listen() {
474474
#[ignore(cfg(windows))]
475475
fn test_port_detach_fail() {
476476
for iter::repeat(100u) {
477-
let builder = task::builder();
478-
task::unsupervise(builder);
479-
do task::run(builder) {
477+
do task::spawn_unlinked {
480478
let po = port();
481479
let ch = po.chan();
482480

trunk/src/libcore/priv.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,7 @@ fn test_weaken_task_then_unweaken() {
210210

211211
#[test]
212212
fn test_weaken_task_wait() {
213-
let builder = task::builder();
214-
task::unsupervise(builder);
215-
do task::run(builder) {
213+
do task::spawn_unlinked {
216214
unsafe {
217215
do weaken_task |po| {
218216
comm::recv(po);
@@ -231,9 +229,7 @@ fn test_weaken_task_stress() {
231229
}
232230
}
233231
}
234-
let builder = task::builder();
235-
task::unsupervise(builder);
236-
do task::run(builder) {
232+
do task::spawn_unlinked {
237233
unsafe {
238234
do weaken_task |po| {
239235
// Wait for it to tell us to die

trunk/src/libcore/task.rs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export run_listener;
5151
export run_with;
5252

5353
export spawn;
54+
export spawn_unlinked;
5455
export spawn_with;
5556
export spawn_listener;
5657
export spawn_sched;
@@ -73,10 +74,6 @@ export thread_per_task;
7374
export manual_threads;
7475
export osmain;
7576

76-
// FIXME (See #2945): This shouldn't be exported, but is to work around
77-
// what appears to be a metadata bug.
78-
export local_data;
79-
8077
/* Data types */
8178

8279
/// A handle to a task
@@ -434,6 +431,17 @@ fn spawn(+f: fn~()) {
434431
run(builder(), f);
435432
}
436433

434+
fn spawn_unlinked(+f: fn~()) {
435+
/*!
436+
* Creates a child task unlinked from the current one. If either this
437+
* task or the child task fails, the other will not be killed.
438+
*/
439+
440+
let b = builder();
441+
unsupervise(b);
442+
run(b, f);
443+
}
444+
437445
fn spawn_with<A:send>(+arg: A, +f: fn~(+A)) {
438446
/*!
439447
* Runs a task, while transfering ownership of one argument to the
@@ -1163,12 +1171,8 @@ fn test_spawn_raw_unsupervise() {
11631171
fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port
11641172
let po = comm::port();
11651173
let ch = comm::chan(po);
1166-
let builder = task::builder();
1167-
task::unsupervise(builder);
1168-
do task::run(builder) {
1169-
let builder = task::builder();
1170-
task::unsupervise(builder);
1171-
do task::run(builder) {
1174+
do task::spawn_unlinked {
1175+
do task::spawn_unlinked {
11721176
// Give middle task a chance to fail-but-not-kill-us.
11731177
for iter::repeat(8192) { task::yield(); }
11741178
comm::send(ch, ()); // If killed first, grandparent hangs.
@@ -1179,9 +1183,7 @@ fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port
11791183
}
11801184
#[test] #[ignore(cfg(windows))]
11811185
fn test_spawn_unlinked_unsup_no_fail_up() { // child unlinked fails
1182-
let builder = task::builder();
1183-
task::unsupervise(builder);
1184-
do task::run(builder) { fail; }
1186+
do task::spawn_unlinked { fail; }
11851187
}
11861188
#[test] #[ignore(cfg(windows))]
11871189
fn test_spawn_unlinked_sup_no_fail_up() { // child unlinked fails

trunk/src/rustc/driver/session.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ const coherence: uint = 512u;
3939
const borrowck_stats: uint = 1024u;
4040
const borrowck_note_pure: uint = 2048;
4141
const borrowck_note_loan: uint = 4096;
42-
const no_landing_pads: uint = 8192;
4342

4443
fn debugging_opts_map() -> ~[(~str, ~str, uint)] {
4544
~[(~"ppregions", ~"prettyprint regions with \
@@ -59,9 +58,7 @@ fn debugging_opts_map() -> ~[(~str, ~str, uint)] {
5958
(~"borrowck-note-pure", ~"note where purity is req'd",
6059
borrowck_note_pure),
6160
(~"borrowck-note-loan", ~"note where loans are req'd",
62-
borrowck_note_loan),
63-
(~"no-landing-pads", ~"omit landing pads for unwinding",
64-
no_landing_pads)
61+
borrowck_note_loan)
6562
]
6663
}
6764

trunk/src/rustc/middle/trans/base.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3224,10 +3224,6 @@ fn invoke(bcx: block, llfn: ValueRef, llargs: ~[ValueRef]) -> block {
32243224
}
32253225

32263226
fn need_invoke(bcx: block) -> bool {
3227-
if (bcx.ccx().sess.opts.debugging_opts & session::no_landing_pads != 0) {
3228-
ret false;
3229-
}
3230-
32313227
if have_cached_lpad(bcx) {
32323228
ret true;
32333229
}

trunk/src/test/run-pass/lots-a-fail.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ fn iloop() {
1414

1515
fn main() {
1616
for uint::range(0u, 100u) |_i| {
17-
let builder = task::builder();
18-
task::unsupervise(builder);
19-
task::run(builder, || iloop() );
17+
task::spawn_unlinked(|| iloop() );
2018
}
21-
}
19+
}

trunk/src/test/run-pass/pipe-detect-term.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ fn main() {
2727

2828
sleep(iotask, 100);
2929

30-
let b = task::builder();
31-
task::unsupervise(b);
32-
task::run(b, failtest);
30+
task::spawn_unlinked(failtest);
3331
}
3432

3533
// Make sure the right thing happens during failure.

trunk/src/test/run-pass/send-iloop.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ fn iloop() {
2222

2323
fn main() {
2424
for uint::range(0u, 16u) |_i| {
25-
let builder = task::builder();
26-
task::unsupervise(builder);
27-
task::run(builder, || iloop() );
25+
task::spawn_unlinked(|| iloop() );
2826
}
29-
}
27+
}

trunk/src/test/run-pass/task-killjoin-rsrc.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// xfail-test
2-
31
// A port of task-killjoin to use a class with a dtor to manage
42
// the join.
53

@@ -10,7 +8,7 @@ class notify {
108
let ch: comm::chan<bool>; let v: @mut bool;
119
new(ch: comm::chan<bool>, v: @mut bool) { self.ch = ch; self.v = v; }
1210
drop {
13-
#error~["notify: task=%? v=%x unwinding=%b b=%b",
11+
#error["notify: task=%? v=%x unwinding=%b b=%b",
1412
task::get_task(),
1513
ptr::addr_of(*(self.v)) as uint,
1614
task::failing(),
@@ -20,11 +18,10 @@ class notify {
2018
}
2119
}
2220
23-
fn joinable(f: fn~()) -> comm::port<bool> {
24-
fn wrapper(+pair: (comm::chan<bool>, fn())) {
25-
let (c, f) = pair;
21+
fn joinable(+f: fn~()) -> comm::port<bool> {
22+
fn wrapper(+c: comm::chan<bool>, +f: fn()) {
2623
let b = @mut false;
27-
#error~["wrapper: task=%? allocated v=%x",
24+
#error["wrapper: task=%? allocated v=%x",
2825
task::get_task(),
2926
ptr::addr_of(*b) as uint];
3027
let _r = notify(c, b);
@@ -33,7 +30,7 @@ fn joinable(f: fn~()) -> comm::port<bool> {
3330
}
3431
let p = comm::port();
3532
let c = comm::chan(p);
36-
let _ = task::spawn {|| wrapper((c, f)) };
33+
do task::spawn_unlinked { wrapper(c, copy f) };
3734
p
3835
}
3936

@@ -50,17 +47,14 @@ fn supervised() {
5047
fail;
5148
}
5249

53-
fn supervisor(b: task::builder) {
54-
// Unsupervise this task so the process doesn't return a failure status as
55-
// a result of the main task being killed.
56-
task::unsupervise(b);
50+
fn supervisor() {
5751
#error["supervisor task=%?", task::get_task()];
5852
let t = joinable(supervised);
5953
join(t);
6054
}
6155

6256
fn main() {
63-
join(joinable({|| supervisor(task::builder())}));
57+
join(joinable(supervisor));
6458
}
6559

6660
// Local Variables:

trunk/src/test/run-pass/task-killjoin.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@ fn supervisor() {
2020
// Unsupervise this task so the process doesn't return a failure status as
2121
// a result of the main task being killed.
2222
let f = supervised;
23-
task::try(|| supervised() );
23+
task::try(supervised);
2424
}
2525

2626
fn main() {
27-
let builder = task::builder();
28-
task::unsupervise(builder);
29-
task::run(builder, || supervisor() )
27+
task::spawn_unlinked(supervisor)
3028
}
3129

3230
// Local Variables:
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
// xfail-win32
22
// error-pattern:ran out of stack
33

4-
// Test that the task fails after hiting the recursion limit, but
4+
// Test that the task fails after hitting the recursion limit, but
55
// that it doesn't bring down the whole proc
66

77
fn main() {
8-
let builder = task::builder();
9-
task::unsupervise(builder);
10-
do task::run(builder) {
8+
do task::spawn_unlinked {
119
fn f() { f() };
1210
f();
1311
};
14-
}
12+
}

trunk/src/test/run-pass/unwind-box.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,5 @@ fn f() {
88
}
99

1010
fn main() {
11-
let builder = task::builder();
12-
task::unsupervise(builder);
13-
task::run(builder, || f() );
14-
}
11+
task::spawn_unlinked(f);
12+
}

trunk/src/test/run-pass/unwind-resource.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ fn f(c: comm::chan<bool>) {
2121
fn main() {
2222
let p = comm::port();
2323
let c = comm::chan(p);
24-
let builder = task::builder();
25-
task::unsupervise(builder);
26-
task::run(builder, || f(c) );
24+
task::spawn_unlinked(|| f(c) );
2725
#error("hiiiiiiiii");
2826
assert comm::recv(p);
29-
}
27+
}

trunk/src/test/run-pass/unwind-resource2.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,5 @@ fn f() {
1515
}
1616

1717
fn main() {
18-
let builder = task::builder();
19-
task::unsupervise(builder);
20-
task::run(builder, || f() );
21-
}
18+
task::spawn_unlinked(f);
19+
}

trunk/src/test/run-pass/unwind-unique.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,5 @@ fn f() {
88
}
99

1010
fn main() {
11-
let builder = task::builder();
12-
task::unsupervise(builder);
13-
task::run(builder, || f() );
14-
}
11+
task::spawn_unlinked(f);
12+
}

0 commit comments

Comments
 (0)