summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2022-11-09 13:29:35 +0100
committerSylvain Henry <sylvain@haskus.fr>2022-11-09 13:29:35 +0100
commitfeef116b282ba351b9e08828dd8b9b46230e9c2b (patch)
treef8b22b7fe0a201ef260d662ca363adb610c47efe
parent7bf1e700894f60859bc37beac8a010da35cd52e6 (diff)
downloadhaskell-feef116b282ba351b9e08828dd8b9b46230e9c2b.tar.gz
Fix warnings in base
-rw-r--r--libraries/base/GHC/Conc/IO.hs10
-rw-r--r--libraries/base/GHC/IO/FD.hs8
-rw-r--r--libraries/base/GHC/TopHandler.hs1
-rw-r--r--libraries/base/System/CPUTime.hsc29
-rw-r--r--libraries/base/System/CPUTime/Javascript.hs26
-rw-r--r--libraries/base/base.cabal4
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