about summary refs log tree commit diff
path: root/src/libstd/macros.rs
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-10-05 21:58:55 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-10-09 12:38:18 -0700
commit8fcf62b6385a5be4ef3a8e1bdb0f01ce907abd26 (patch)
treefd23aa0117a06bc0cf5827b374744abe32506880 /src/libstd/macros.rs
parentacf9783879dca0db0721c10ac79c9078f2dec425 (diff)
downloadrust-8fcf62b6385a5be4ef3a8e1bdb0f01ce907abd26.tar.gz
rust-8fcf62b6385a5be4ef3a8e1bdb0f01ce907abd26.zip
Don't abort if the runtime is run twice.
This changes an `assert_once_ever!` assertion to just a plain old assertion
around an atomic boolean to ensure that one particular runtime doesn't attempt
to exit twice.

Closes #9739
Diffstat (limited to 'src/libstd/macros.rs')
-rw-r--r--src/libstd/macros.rs38
1 files changed, 0 insertions, 38 deletions
diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs
index 0b1475ff380..2ef25548535 100644
--- a/src/libstd/macros.rs
+++ b/src/libstd/macros.rs
@@ -42,41 +42,3 @@ macro_rules! rtabort(
         ::rt::util::abort(format!($($msg)*));
     } )
 )
-
-macro_rules! assert_once_ever(
-    ($($msg:tt)+) => ( {
-        // FIXME(#8472) extra function should not be needed to hide unsafe
-        fn assert_once_ever() {
-            unsafe {
-                static mut already_happened: int = 0;
-                // Double-check lock to avoid a swap in the common case.
-                if already_happened != 0 ||
-                    ::unstable::intrinsics::atomic_xchg_relaxed(&mut already_happened, 1) != 0 {
-                        fail2!("assert_once_ever happened twice: {}",
-                               format!($($msg)+));
-                }
-            }
-        }
-        assert_once_ever();
-    } )
-)
-
-#[cfg(test)]
-mod tests {
-    #[test]
-    fn test_assert_once_ever_ok() {
-        assert_once_ever!("help i'm stuck in an");
-        assert_once_ever!("assertion error message");
-    }
-
-    #[test] #[ignore(cfg(windows))] #[should_fail]
-    fn test_assert_once_ever_fail() {
-        use task;
-
-        fn f() { assert_once_ever!("if you're seeing this... good!") }
-
-        // linked & watched, naturally
-        task::spawn(f);
-        task::spawn(f);
-    }
-}