diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2013-08-14 21:41:40 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2013-08-19 07:13:15 -0400 |
| commit | 0479d946c83cf9ed90bba5b33820ea4118dd8f9e (patch) | |
| tree | 0e31638f9dee1f085c9463e2a6b3f8b9209c6fdd /src/libstd/task | |
| parent | 303f650ecfb5580f3d89aa662fbd164b849c8eff (diff) | |
| download | rust-0479d946c83cf9ed90bba5b33820ea4118dd8f9e.tar.gz rust-0479d946c83cf9ed90bba5b33820ea4118dd8f9e.zip | |
Add externfn macro and correctly label fixed_stack_segments
Diffstat (limited to 'src/libstd/task')
| -rw-r--r-- | src/libstd/task/local_data_priv.rs | 12 | ||||
| -rw-r--r-- | src/libstd/task/mod.rs | 15 |
2 files changed, 15 insertions, 12 deletions
diff --git a/src/libstd/task/local_data_priv.rs b/src/libstd/task/local_data_priv.rs index 3a11dee3138..8132bfe5377 100644 --- a/src/libstd/task/local_data_priv.rs +++ b/src/libstd/task/local_data_priv.rs @@ -147,7 +147,7 @@ pub unsafe fn local_pop<T: 'static>(handle: Handle, // above. let data = match util::replace(entry, None) { Some((_, data, _)) => data, - None => libc::abort(), + None => abort(), }; // Move `data` into transmute to get out the memory that it @@ -252,7 +252,7 @@ unsafe fn local_get_with<T: 'static, U>(handle: Handle, } } } - _ => libc::abort() + _ => abort() } // n.b. 'data' and 'loans' are both invalid pointers at the point @@ -262,7 +262,7 @@ unsafe fn local_get_with<T: 'static, U>(handle: Handle, if return_loan { match map[i] { Some((_, _, ref mut loan)) => { *loan = NoLoan; } - None => { libc::abort(); } + None => { abort(); } } } return ret; @@ -270,6 +270,12 @@ unsafe fn local_get_with<T: 'static, U>(handle: Handle, } } +fn abort() -> ! { + #[fixed_stack_segment]; #[inline(never)]; + + unsafe { libc::abort() } +} + pub unsafe fn local_set<T: 'static>(handle: Handle, key: local_data::Key<T>, data: T) { diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index 2c79f1c4ded..0d2e62a7700 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -1045,15 +1045,12 @@ fn test_spawn_sched_childs_on_default_sched() { mod testrt { use libc; - #[nolink] - extern { - pub fn rust_dbg_lock_create() -> *libc::c_void; - pub fn rust_dbg_lock_destroy(lock: *libc::c_void); - pub fn rust_dbg_lock_lock(lock: *libc::c_void); - pub fn rust_dbg_lock_unlock(lock: *libc::c_void); - pub fn rust_dbg_lock_wait(lock: *libc::c_void); - pub fn rust_dbg_lock_signal(lock: *libc::c_void); - } + externfn!(fn rust_dbg_lock_create() -> *libc::c_void) + externfn!(fn rust_dbg_lock_destroy(lock: *libc::c_void)) + externfn!(fn rust_dbg_lock_lock(lock: *libc::c_void)) + externfn!(fn rust_dbg_lock_unlock(lock: *libc::c_void)) + externfn!(fn rust_dbg_lock_wait(lock: *libc::c_void)) + externfn!(fn rust_dbg_lock_signal(lock: *libc::c_void)) } #[test] |
