From faff671a7786202bff39fa0cdf41e4518fb11c4b Mon Sep 17 00:00:00 2001
From: Luite Stegeman <stegeman@gmail.com>
Date: Thu, 12 Oct 2023 22:02:52 +0200
Subject: [PATCH] JS: clean up some foreign imports

---
 libraries/base/src/GHC/JS/Foreign/Callback.hs |  2 +-
 libraries/base/src/GHC/JS/Prim.hs             |  8 +++----
 libraries/base/src/GHC/JS/Prim/Internal.hs    |  6 +++---
 libraries/base/src/System/Posix/Internals.hs  |  2 +-
 rts/js/config.js                              | 21 +++++++++++++++++++
 rts/js/thread.js                              |  2 --
 rts/rts.cabal                                 |  1 +
 7 files changed, 31 insertions(+), 11 deletions(-)
 create mode 100644 rts/js/config.js

diff --git a/libraries/base/src/GHC/JS/Foreign/Callback.hs b/libraries/base/src/GHC/JS/Foreign/Callback.hs
index e40c9257b42e..441ac2f42dfe 100644
--- a/libraries/base/src/GHC/JS/Foreign/Callback.hs
+++ b/libraries/base/src/GHC/JS/Foreign/Callback.hs
@@ -145,5 +145,5 @@ foreign import javascript unsafe "(($1, $2) => { return h$makeCallbackApply($1,
 foreign import javascript unsafe "(($1, $2) => { return h$makeCallbackApply($1, h$runSyncReturn, [false], $2); })"
   js_syncCallbackApplyReturn :: Int -> Exts.Any -> IO (Callback b)
 
-foreign import javascript unsafe "(($1) => { return h$release($1); })"
+foreign import javascript unsafe "h$release"
   js_release :: Callback a -> IO ()
diff --git a/libraries/base/src/GHC/JS/Prim.hs b/libraries/base/src/GHC/JS/Prim.hs
index 7b92c6160d72..3101fd708786 100644
--- a/libraries/base/src/GHC/JS/Prim.hs
+++ b/libraries/base/src/GHC/JS/Prim.hs
@@ -259,16 +259,16 @@ seqList xs = go xs `seq` xs
   where go (y:ys) = y `seq` go ys
         go []     = ()
 
-foreign import javascript unsafe "(($1) => { return h$toHsString($1); })"
+foreign import javascript unsafe "h$toHsString"
   js_fromJSString :: JSVal -> Exts.Any
 
-foreign import javascript unsafe "(($1) => { return h$fromHsString($1); })"
+foreign import javascript unsafe "h$fromHsString"
   js_toJSString :: Exts.Any -> JSVal
 
-foreign import javascript unsafe "(($1) => { return h$toHsListJSVal($1); })"
+foreign import javascript unsafe "h$toHsListJSVal"
   js_fromJSArray :: JSVal -> IO Exts.Any
 
-foreign import javascript unsafe "(($1) => { return h$fromHsListJSVal($1); })"
+foreign import javascript unsafe "h$fromHsListJSVal"
   js_toJSArray :: Exts.Any -> IO JSVal
 
 foreign import javascript unsafe "(($1) => { return ($1 === null); })"
diff --git a/libraries/base/src/GHC/JS/Prim/Internal.hs b/libraries/base/src/GHC/JS/Prim/Internal.hs
index be8dd630402a..e39e8e578807 100644
--- a/libraries/base/src/GHC/JS/Prim/Internal.hs
+++ b/libraries/base/src/GHC/JS/Prim/Internal.hs
@@ -43,14 +43,14 @@ foreign import javascript unsafe
   js_setCurrentThreadResultWouldBlock :: IO ()
 
 foreign import javascript unsafe
-  "(($1) => { return h$setCurrentThreadResultJSException($1); })"
+  "h$setCurrentThreadResultJSException"
   js_setCurrentThreadResultJSException :: JSVal -> IO ()
 
 foreign import javascript unsafe
-  "(($1) => { return h$setCurrentThreadResultHaskellException($1); })"
+  "h$setCurrentThreadResultHaskellException"
   js_setCurrentThreadResultHaskellException :: JSVal -> IO ()
 
 foreign import javascript unsafe
-  "(($1) => { return h$setCurrentThreadResultValue($1); })"
+  "h$setCurrentThreadResultValue"
   js_setCurrentThreadResultValue :: JSVal -> IO ()
 
diff --git a/libraries/base/src/System/Posix/Internals.hs b/libraries/base/src/System/Posix/Internals.hs
index 37ec373c203b..08c0614c859b 100644
--- a/libraries/base/src/System/Posix/Internals.hs
+++ b/libraries/base/src/System/Posix/Internals.hs
@@ -504,7 +504,7 @@ foreign import ccall unsafe "HsBase.h __hscore_lstat"
 
 #if defined(javascript_HOST_ARCH)
 
-foreign import javascript unsafe "(() => { return rts_isThreaded; })" rtsIsThreaded_ :: Int
+foreign import javascript unsafe "h$rts_isThreaded" rtsIsThreaded_ :: Int
 foreign import javascript interruptible "h$base_access"
     c_access :: CString -> CInt -> IO CInt
 foreign import javascript interruptible "h$base_chmod"
diff --git a/rts/js/config.js b/rts/js/config.js
new file mode 100644
index 000000000000..2c60c0744f3d
--- /dev/null
+++ b/rts/js/config.js
@@ -0,0 +1,21 @@
+function h$rts_isThreaded() {
+  return 0;
+}
+  
+function h$rts_isTracing() {
+  return 0;
+}
+
+function h$rts_isDynamic() {
+  return 0;
+}
+
+function h$rts_isDebugged() {
+  return 0;
+}
+
+function h$rts_isProfiled() {
+  return 0;
+}
+
+  
\ No newline at end of file
diff --git a/rts/js/thread.js b/rts/js/thread.js
index 23e9fbfbc55a..6a43ceef2b9f 100644
--- a/rts/js/thread.js
+++ b/rts/js/thread.js
@@ -1460,5 +1460,3 @@ function h$makeMVarListener(mv, stopProp, stopImmProp, preventDefault) {
 function h$rs() {
   return h$stack[h$sp];
 }
-
-const rts_isThreaded = 0;
diff --git a/rts/rts.cabal b/rts/rts.cabal
index aa50ff72a492..23901437d7ff 100644
--- a/rts/rts.cabal
+++ b/rts/rts.cabal
@@ -99,6 +99,7 @@ library
       c-sources: version.c
 
       js-sources:
+        js/config.js
         js/structs.js
         js/arith.js
         js/compact.js
-- 
GitLab