Fix C/Haskell type mismatches
authorIan Lynagh <igloo@earth.li>
Tue, 3 Apr 2007 19:53:24 +0000 (19:53 +0000)
committerIan Lynagh <igloo@earth.li>
Tue, 3 Apr 2007 19:53:24 +0000 (19:53 +0000)
compiler/basicTypes/UniqSupply.lhs
includes/RtsExternal.h
rts/RtsUtils.c
rts/Threads.c
rts/posix/Signals.c
rts/win32/ThrIOManager.c

index 7937043..710fc03 100644 (file)
@@ -73,15 +73,15 @@ mkSplitUniqSupply (C# c#)
        -- This is one of the most hammered bits in the whole compiler
        mk_supply#
          = unsafeInterleaveIO (
-               genSymZh    >>= \ (W# u#) ->
+               genSymZh    >>= \ (I# u#) ->
                mk_supply#  >>= \ s1 ->
                mk_supply#  >>= \ s2 ->
-               return (MkSplitUniqSupply (w2i (mask# `or#` u#)) s1 s2)
+               return (MkSplitUniqSupply (w2i (mask# `or#` (i2w u#))) s1 s2)
            )
     in
     mk_supply#
 
-foreign import ccall unsafe "genSymZh" genSymZh :: IO Word
+foreign import ccall unsafe "genSymZh" genSymZh :: IO Int
 
 splitUniqSupply (MkSplitUniqSupply _ s1 s2) = (s1, s2)
 \end{code}
index 37a9bd4..3a3626b 100644 (file)
@@ -26,8 +26,8 @@ extern void newCAF(StgClosure*);
 #endif
 
 /* ToDo: remove? */
-extern I_ genSymZh(void);
-extern I_ resetGenSymZh(void);
+extern HsInt genSymZh(void);
+extern HsInt resetGenSymZh(void);
 
 /* Alternate to raise(3) for threaded rts, for OpenBSD */
 extern int genericRaise(int sig);
@@ -37,7 +37,7 @@ extern int cmp_thread(StgPtr tso1, StgPtr tso2);
 extern int rts_getThreadId(StgPtr tso);
 extern int forkOS_createThread ( HsStablePtr entry );
 extern StgInt forkProcess(HsStablePtr *entry);
-extern StgBool rtsSupportsBoundThreads(void);
+extern HsBool rtsSupportsBoundThreads(void);
 extern StgInt newSpark (StgRegTable *reg, StgClosure *p);
 
 /* grimy low-level support functions defined in StgPrimFloat.c */
@@ -86,9 +86,9 @@ extern StgInt *signal_handlers;
 #endif
 
 #if defined(mingw32_HOST_OS)
-void *getIOManagerEvent (void);
-StgWord32 readIOManagerEvent (void);
-void sendIOManagerEvent (StgWord32 event);
+HANDLE getIOManagerEvent (void);
+HsWord32 readIOManagerEvent (void);
+void sendIOManagerEvent (HsWord32 event);
 #else
 extern void setIOManagerPipe (int fd);
 #endif
index a62a459..7048e94 100644 (file)
@@ -298,14 +298,14 @@ nat stg_strlen(char *s)
    ToDo: put this somewhere sensible.
    -------------------------------------------------------------------------  */
 
-static I_ __GenSymCounter = 0;
+static HsInt __GenSymCounter = 0;
 
-I_
+HsInt
 genSymZh(void)
 {
     return(__GenSymCounter++);
 }
-I_
+HsInt
 resetGenSymZh(void) /* it's your funeral */
 {
     __GenSymCounter=0;
index d2cac62..d7b5f41 100644 (file)
@@ -657,13 +657,13 @@ awakenBlockedQueue(Capability *cap, StgTSO *tso)
  * used by Control.Concurrent for error checking.
  * ------------------------------------------------------------------------- */
  
-StgBool
+HsBool
 rtsSupportsBoundThreads(void)
 {
 #if defined(THREADED_RTS)
-  return rtsTrue;
+  return HS_BOOL_TRUE;
 #else
-  return rtsFalse;
+  return HS_BOOL_FALSE;
 #endif
 }
 
index 4ae22cd..abbb97a 100644 (file)
@@ -41,7 +41,7 @@
  * to POSIX.1 to control whether or not to include SA_NOCLDSTOP when
  * installing a SIGCHLD handler. 
  */
-StgInt nocldstop = 0;
+HsInt nocldstop = 0;
 
 /* -----------------------------------------------------------------------------
  * The table of signal handlers
index b0da0de..76747c2 100644 (file)
@@ -59,20 +59,20 @@ nat next_event;
 \r
 #endif\r
 \r
-StgWord32\r
+HsWord32\r
 readIOManagerEvent (void)\r
 {\r
     // This function must exist even in non-THREADED_RTS, \r
     // see getIOManagerEvent() above.\r
 #if defined(THREADED_RTS)\r
-    StgWord32 res;\r
+    HsWord32 res;\r
 \r
     ACQUIRE_LOCK(&event_buf_mutex);\r
     if (io_manager_event != INVALID_HANDLE_VALUE) {\r
         if (next_event == 0) {\r
             res = 0; // no event to return\r
         } else {\r
-            res = event_buf[--next_event];\r
+            res = (HsWord32)(event_buf[--next_event]);\r
             if (next_event == 0) {\r
                 if (!ResetEvent(io_manager_event)) {\r
                     sysErrorBelch("readIOManagerEvent");\r
@@ -92,7 +92,7 @@ readIOManagerEvent (void)
 }\r
 \r
 void\r
-sendIOManagerEvent (StgWord32 event)\r
+sendIOManagerEvent (HsWord32 event)\r
 {\r
 #if defined(THREADED_RTS)\r
     // debugBelch("sendIOManagerEvent: %d\n", event);\r
@@ -105,7 +105,7 @@ sendIOManagerEvent (StgWord32 event)
                 sysErrorBelch("sendIOManagerEvent");\r
                 stg_exit(EXIT_FAILURE);\r
             }        \r
-            event_buf[next_event++] = event;\r
+            event_buf[next_event++] = (StgWord32)event;\r
         }\r
     }\r
     RELEASE_LOCK(&event_buf_mutex);\r