Fix sleep on ratios, avoiding consing.
authorStas Boukarev <stassats@gmail.com>
Mon, 3 Jun 2013 09:52:06 +0000 (13:52 +0400)
committerStas Boukarev <stassats@gmail.com>
Mon, 3 Jun 2013 09:52:06 +0000 (13:52 +0400)
Enable sleep tests for some platforms.

src/code/toplevel.lisp
tests/interface.pure.lisp

index 1c00f03..6eb9227 100644 (file)
@@ -181,7 +181,7 @@ means to wait indefinitely.")
        (multiple-value-bind (quot rem) (truncate (numerator seconds)
                                                  (denominator seconds))
          (values quot
-                 (truncate (* rem (/ 1000000000 (denominator seconds)))))))
+                 (* rem (truncate 1000000000 (denominator seconds))))))
       (t
        (multiple-value-bind (sec frac)
            (truncate seconds)
index 8a4d2fd..2a5c3d6 100644 (file)
       (sleep 2))))
 
 ;;; SLEEP should not cons
-(with-test (:name (sleep :non-consing) :fails-on '(or (not :x86-64) :win32))
-  (ctu:assert-no-consing (sleep 0.00001)))
-
-;;; SLEEP should work with large integers as well -- no timers
-;;; on win32, so don't test there.
-(with-test (:name (sleep pretty-much-forever) :skipped-on :win32)
+(with-test (:name (sleep :non-consing) :fails-on :win32)
+  (ctu:assert-no-consing (sleep 0.00001s0))
+  (locally (declare (notinline sleep))
+    (ctu:assert-no-consing (sleep 0.00001s0))
+    (ctu:assert-no-consing (sleep 0.00001d0))
+    (ctu:assert-no-consing (sleep 1/100000000000000))))
+
+;;; SLEEP should work with large integers as well
+(with-test (:name (sleep pretty-much-forever))
   (assert (eq :timeout
               (handler-case
                   (sb-ext:with-timeout 1