about summary refs log tree commit diff
path: root/src/libcore/task
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-04-22 17:15:31 -0700
committerBrian Anderson <banderson@mozilla.com>2013-04-22 17:15:31 -0700
commit42c0f88232847e97e6cf3578ef197d1942bba44d (patch)
tree6167cb170f891dad4674e2c186f785d6a0160b5d /src/libcore/task
parent5fbb0949a53a6ac51c6d9b187ef4c464e52ae536 (diff)
downloadrust-42c0f88232847e97e6cf3578ef197d1942bba44d.tar.gz
rust-42c0f88232847e97e6cf3578ef197d1942bba44d.zip
core::rt: Add unwinding to newsched tasks
Diffstat (limited to 'src/libcore/task')
-rw-r--r--src/libcore/task/mod.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/libcore/task/mod.rs b/src/libcore/task/mod.rs
index a243bfba85c..e1f4805a692 100644
--- a/src/libcore/task/mod.rs
+++ b/src/libcore/task/mod.rs
@@ -558,8 +558,22 @@ pub fn yield() {
 pub fn failing() -> bool {
     //! True if the running task has failed
 
-    unsafe {
-        rt::rust_task_is_unwinding(rt::rust_get_task())
+    use rt::{context, OldTaskContext};
+    use rt::local_services::borrow_local_services;
+
+    match context() {
+        OldTaskContext => {
+            unsafe {
+                rt::rust_task_is_unwinding(rt::rust_get_task())
+            }
+        }
+        _ => {
+            let mut unwinding = false;
+            do borrow_local_services |local| {
+                unwinding = local.unwinder.unwinding;
+            }
+            return unwinding;
+        }
     }
 }