diff options
author | Sylvain Henry <sylvain@haskus.fr> | 2022-11-09 13:29:35 +0100 |
---|---|---|
committer | Sylvain Henry <sylvain@haskus.fr> | 2022-11-09 13:29:35 +0100 |
commit | feef116b282ba351b9e08828dd8b9b46230e9c2b (patch) | |
tree | f8b22b7fe0a201ef260d662ca363adb610c47efe | |
parent | 7bf1e700894f60859bc37beac8a010da35cd52e6 (diff) | |
download | haskell-feef116b282ba351b9e08828dd8b9b46230e9c2b.tar.gz |
Fix warnings in base
-rw-r--r-- | libraries/base/GHC/Conc/IO.hs | 10 | ||||
-rw-r--r-- | libraries/base/GHC/IO/FD.hs | 8 | ||||
-rw-r--r-- | libraries/base/GHC/TopHandler.hs | 1 | ||||
-rw-r--r-- | libraries/base/System/CPUTime.hsc | 29 | ||||
-rw-r--r-- | libraries/base/System/CPUTime/Javascript.hs | 26 | ||||
-rw-r--r-- | libraries/base/base.cabal | 4 |
6 files changed, 44 insertions, 34 deletions
diff --git a/libraries/base/GHC/Conc/IO.hs b/libraries/base/GHC/Conc/IO.hs index d525fba3f0..869847e77a 100644 --- a/libraries/base/GHC/Conc/IO.hs +++ b/libraries/base/GHC/Conc/IO.hs @@ -215,13 +215,15 @@ threadDelay time -- 2147483647 μs, less than 36 minutes. -- registerDelay :: Int -> IO (TVar Bool) -registerDelay usecs +registerDelay _usecs #if defined(mingw32_HOST_OS) - | isWindowsNativeIO = Windows.registerDelay usecs - | threaded = Windows.registerDelay usecs + | isWindowsNativeIO = Windows.registerDelay _usecs + | threaded = Windows.registerDelay _usecs #elif !defined(js_HOST_ARCH) - | threaded = Event.registerDelay usecs + | threaded = Event.registerDelay _usecs #endif | otherwise = errorWithoutStackTrace "registerDelay: requires -threaded" +#if !defined(js_HOST_ARCH) foreign import ccall unsafe "rtsSupportsBoundThreads" threaded :: Bool +#endif diff --git a/libraries/base/GHC/IO/FD.hs b/libraries/base/GHC/IO/FD.hs index 08ecda250f..429fd14eae 100644 --- a/libraries/base/GHC/IO/FD.hs +++ b/libraries/base/GHC/IO/FD.hs @@ -658,15 +658,13 @@ writeRawBufferPtrNoBlock loc !fd !buf !off !len safe_write = do_write (c_safe_write (fdFD fd) (buf `plusPtr` off) len) #endif +#ifndef js_HOST_ARCH isNonBlocking :: FD -> Bool -#ifdef js_HOST_ARCH -isNonBlocking _ = True -#else isNonBlocking fd = fdIsNonBlocking fd /= 0 -#endif foreign import ccall unsafe "fdReady" unsafe_fdReady :: CInt -> CBool -> Int64 -> CBool -> IO CInt +#endif #else /* mingw32_HOST_OS.... */ @@ -756,7 +754,9 @@ foreign import WINDOWS_CCONV safe "send" #endif +#ifndef js_HOST_ARCH foreign import ccall unsafe "rtsSupportsBoundThreads" threaded :: Bool +#endif -- ----------------------------------------------------------------------------- -- utils diff --git a/libraries/base/GHC/TopHandler.hs b/libraries/base/GHC/TopHandler.hs index d951490e7c..430c05ec73 100644 --- a/libraries/base/GHC/TopHandler.hs +++ b/libraries/base/GHC/TopHandler.hs @@ -46,6 +46,7 @@ import GHC.Weak #if defined(mingw32_HOST_OS) import GHC.ConsoleHandler +#elif defined(js_HOST_ARCH) #else import Data.Dynamic (toDyn) #endif diff --git a/libraries/base/System/CPUTime.hsc b/libraries/base/System/CPUTime.hsc index e4395f10ef..19d21e2135 100644 --- a/libraries/base/System/CPUTime.hsc +++ b/libraries/base/System/CPUTime.hsc @@ -1,8 +1,5 @@ {-# LANGUAGE Trustworthy #-} {-# LANGUAGE CPP, CApiFFI #-} -##if defined(js_HOST_ARCH) -{-# LANGUAGE JavaScriptFFI #-} -##endif ----------------------------------------------------------------------------- -- | @@ -33,31 +30,13 @@ module System.CPUTime import System.IO.Unsafe (unsafePerformIO) -##if defined(js_HOST_ARCH) -import qualified System.CPUTime.Unsupported as I - -cpuTimePrecision :: Integer -cpuTimePrecision = toInteger js_cpuTimePrecision - -getCPUTime :: IO Integer -getCPUTime = do - t <- js_getCPUTime - if t == -1 then I.getCPUTime - else pure (1000 * round t) - -foreign import javascript unsafe - "(() => { return h$cpuTimePrecision; })" - js_cpuTimePrecision :: Int - -foreign import javascript unsafe - "(() => { return h$getCPUTime; })" - js_getCPUTime :: IO Double - -##else -- Here is where we decide which backend to use #if defined(mingw32_HOST_OS) import qualified System.CPUTime.Windows as I +#elif defined(js_HOST_ARCH) +import qualified System.CPUTime.Javascript as I + #elif _POSIX_TIMERS > 0 && defined(_POSIX_CPUTIME) && _POSIX_CPUTIME >= 0 import qualified System.CPUTime.Posix.ClockGetTime as I @@ -89,5 +68,3 @@ cpuTimePrecision = unsafePerformIO I.getCpuTimePrecision -- implementation-dependent. getCPUTime :: IO Integer getCPUTime = I.getCPUTime - -##endif diff --git a/libraries/base/System/CPUTime/Javascript.hs b/libraries/base/System/CPUTime/Javascript.hs new file mode 100644 index 0000000000..612d428f0e --- /dev/null +++ b/libraries/base/System/CPUTime/Javascript.hs @@ -0,0 +1,26 @@ +{-# LANGUAGE JavaScriptFFI #-} + +module System.CPUTime.Javascript + ( getCPUTime + , getCpuTimePrecision + ) +where + +import qualified System.CPUTime.Unsupported as I + +getCpuTimePrecision :: IO Integer +getCpuTimePrecision = toInteger <$> js_cpuTimePrecision + +getCPUTime :: IO Integer +getCPUTime = do + t <- js_getCPUTime + if t == -1 then I.getCPUTime + else pure (1000 * round t) + +foreign import javascript unsafe + "(() => { return h$cpuTimePrecision(); })" + js_cpuTimePrecision :: IO Int + +foreign import javascript unsafe + "(() => { return h$getCPUTime(); })" + js_getCPUTime :: IO Double diff --git a/libraries/base/base.cabal b/libraries/base/base.cabal index 6ab279c06b..1af0d4b73b 100644 --- a/libraries/base/base.cabal +++ b/libraries/base/base.cabal @@ -460,6 +460,10 @@ Library System.CPUTime.Posix.RUsage System.CPUTime.Unsupported + if arch(js) + other-modules: + System.CPUTime.Javascript + -- The Ports framework always passes this flag when building software that -- uses iconv to make iconv from Ports compatible with iconv from the base system -- See /usr/ports/Mk/Uses/iconv.mk |