X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fsrctran.lisp;h=cc6b36d9124b2859bc4208cd08cfffb0f3393743;hb=f962bad9a3dcfa165fe359e60be48c636a1622ec;hp=c90ca445fbdfc288c960f5abb10d7f46ea5ff04a;hpb=ac405df3f196d58f6a5a2003afd8f48f490300df;p=sbcl.git diff --git a/src/compiler/srctran.lisp b/src/compiler/srctran.lisp index c90ca44..cc6b36d 100644 --- a/src/compiler/srctran.lisp +++ b/src/compiler/srctran.lisp @@ -4677,3 +4677,16 @@ (if (zerop (rem time-zone 1/3600)) (encode-universal-time second minute hour date month year time-zone) (give-up-ir1-transform)))) + +#!-(and win32 (not sb-thread)) +(deftransform sleep ((seconds) ((integer 0 #.(expt 10 8)))) + `(sb!unix:nanosleep seconds 0)) + +#!-(and win32 (not sb-thread)) +(deftransform sleep ((seconds) ((constant-arg (real 0)))) + (let ((seconds-value (lvar-value seconds))) + (multiple-value-bind (seconds nano) + (sb!impl::split-seconds-for-sleep seconds-value) + (if (> seconds (expt 10 8)) + (give-up-ir1-transform) + `(sb!unix:nanosleep ,seconds ,nano)))))