Skip to content

Commit 416fc0d

Browse files
author
Elliott Slaughter
committed
---
yaml --- r: 22658 b: refs/heads/master c: d8c75cf h: refs/heads/master v: v3
1 parent 78272a7 commit 416fc0d

File tree

16 files changed

+73
-41
lines changed

16 files changed

+73
-41
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: d0fb85359aab074a8a24b823054d8c4ac6640686
2+
refs/heads/master: d8c75cfbe7951f62296b4c9311811a0f414ab0f7
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/libcore/comm.rs

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

trunk/src/libcore/priv.rs

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

211211
#[test]
212212
fn test_weaken_task_wait() {
213-
do task::spawn_unlinked {
213+
let builder = task::builder();
214+
task::unsupervise(builder);
215+
do task::run(builder) {
214216
unsafe {
215217
do weaken_task |po| {
216218
comm::recv(po);
@@ -229,7 +231,9 @@ fn test_weaken_task_stress() {
229231
}
230232
}
231233
}
232-
do task::spawn_unlinked {
234+
let builder = task::builder();
235+
task::unsupervise(builder);
236+
do task::run(builder) {
233237
unsafe {
234238
do weaken_task |po| {
235239
// Wait for it to tell us to die

trunk/src/libcore/task.rs

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

5353
export spawn;
54-
export spawn_unlinked;
5554
export spawn_with;
5655
export spawn_listener;
5756
export spawn_sched;
@@ -74,6 +73,10 @@ export thread_per_task;
7473
export manual_threads;
7574
export osmain;
7675

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+
7780
/* Data types */
7881

7982
/// A handle to a task
@@ -431,17 +434,6 @@ fn spawn(+f: fn~()) {
431434
run(builder(), f);
432435
}
433436

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-
445437
fn spawn_with<A:send>(+arg: A, +f: fn~(+A)) {
446438
/*!
447439
* Runs a task, while transfering ownership of one argument to the
@@ -1171,8 +1163,12 @@ fn test_spawn_raw_unsupervise() {
11711163
fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port
11721164
let po = comm::port();
11731165
let ch = comm::chan(po);
1174-
do task::spawn_unlinked {
1175-
do task::spawn_unlinked {
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) {
11761172
// Give middle task a chance to fail-but-not-kill-us.
11771173
for iter::repeat(8192) { task::yield(); }
11781174
comm::send(ch, ()); // If killed first, grandparent hangs.
@@ -1183,7 +1179,9 @@ fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port
11831179
}
11841180
#[test] #[ignore(cfg(windows))]
11851181
fn test_spawn_unlinked_unsup_no_fail_up() { // child unlinked fails
1186-
do task::spawn_unlinked { fail; }
1182+
let builder = task::builder();
1183+
task::unsupervise(builder);
1184+
do task::run(builder) { fail; }
11871185
}
11881186
#[test] #[ignore(cfg(windows))]
11891187
fn test_spawn_unlinked_sup_no_fail_up() { // child unlinked fails

trunk/src/rustc/driver/session.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ 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;
4243

4344
fn debugging_opts_map() -> ~[(~str, ~str, uint)] {
4445
~[(~"ppregions", ~"prettyprint regions with \
@@ -58,7 +59,9 @@ fn debugging_opts_map() -> ~[(~str, ~str, uint)] {
5859
(~"borrowck-note-pure", ~"note where purity is req'd",
5960
borrowck_note_pure),
6061
(~"borrowck-note-loan", ~"note where loans are req'd",
61-
borrowck_note_loan)
62+
borrowck_note_loan),
63+
(~"no-landing-pads", ~"omit landing pads for unwinding",
64+
no_landing_pads)
6265
]
6366
}
6467

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3224,6 +3224,10 @@ 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+
32273231
if have_cached_lpad(bcx) {
32283232
ret true;
32293233
}

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

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

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

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

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

2828
sleep(iotask, 100);
2929

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

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

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

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

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

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn joinable(f: fn~()) -> comm::port<bool> {
3333
}
3434
let p = comm::port();
3535
let c = comm::chan(p);
36-
let _ = task::spawn_unlinked {|| wrapper((c, f)) };
36+
let _ = task::spawn {|| wrapper((c, f)) };
3737
p
3838
}
3939

@@ -50,14 +50,17 @@ fn supervised() {
5050
fail;
5151
}
5252

53-
fn supervisor() {
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);
5457
#error["supervisor task=%?", task::get_task()];
5558
let t = joinable(supervised);
5659
join(t);
5760
}
5861

5962
fn main() {
60-
join(joinable({|| supervisor()}));
63+
join(joinable({|| supervisor(task::builder())}));
6164
}
6265

6366
// Local Variables:

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@ 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-
task::spawn_unlinked(supervisor)
27+
let builder = task::builder();
28+
task::unsupervise(builder);
29+
task::run(builder, || supervisor() )
2830
}
2931

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 commit comments

Comments
 (0)