Skip to content

Commit 84378b0

Browse files
committed
std: Use Arc instead of UnsafeArc in BlockedTask
1 parent fe93c3d commit 84378b0

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/libstd/rt/task.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
//! local storage, and logging. Even a 'freestanding' Rust would likely want
1414
//! to implement this.
1515
16+
use alloc::arc::Arc;
17+
1618
use cleanup;
1719
use clone::Clone;
1820
use comm::Sender;
@@ -32,7 +34,6 @@ use rt::local_heap::LocalHeap;
3234
use rt::rtio::LocalIo;
3335
use rt::unwind::Unwinder;
3436
use str::SendStr;
35-
use sync::arc::UnsafeArc;
3637
use sync::atomics::{AtomicUint, SeqCst};
3738
use task::{TaskResult, TaskOpts};
3839
use unstable::finally::Finally;
@@ -65,7 +66,7 @@ pub struct LocalStorage(pub Option<local_data::Map>);
6566
/// at any time.
6667
pub enum BlockedTask {
6768
Owned(Box<Task>),
68-
Shared(UnsafeArc<AtomicUint>),
69+
Shared(Arc<AtomicUint>),
6970
}
7071

7172
pub enum DeathAction {
@@ -82,7 +83,7 @@ pub struct Death {
8283
}
8384

8485
pub struct BlockedTasks {
85-
inner: UnsafeArc<AtomicUint>,
86+
inner: Arc<AtomicUint>,
8687
}
8788

8889
impl Task {
@@ -313,10 +314,10 @@ impl BlockedTask {
313314
pub fn wake(self) -> Option<Box<Task>> {
314315
match self {
315316
Owned(task) => Some(task),
316-
Shared(arc) => unsafe {
317-
match (*arc.get()).swap(0, SeqCst) {
317+
Shared(arc) => {
318+
match arc.swap(0, SeqCst) {
318319
0 => None,
319-
n => Some(mem::transmute(n)),
320+
n => Some(unsafe { mem::transmute(n) }),
320321
}
321322
}
322323
}
@@ -343,7 +344,7 @@ impl BlockedTask {
343344
let arc = match self {
344345
Owned(task) => {
345346
let flag = unsafe { AtomicUint::new(mem::transmute(task)) };
346-
UnsafeArc::new(flag)
347+
Arc::new(flag)
347348
}
348349
Shared(arc) => arc.clone(),
349350
};
@@ -375,7 +376,7 @@ impl BlockedTask {
375376
if blocked_task_ptr & 0x1 == 0 {
376377
Owned(mem::transmute(blocked_task_ptr))
377378
} else {
378-
let ptr: Box<UnsafeArc<AtomicUint>> =
379+
let ptr: Box<Arc<AtomicUint>> =
379380
mem::transmute(blocked_task_ptr & !1);
380381
Shared(*ptr)
381382
}

0 commit comments

Comments
 (0)