-- 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}
#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);
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 */
#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
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;
* 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
}
* 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
\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
}\r
\r
void\r
-sendIOManagerEvent (StgWord32 event)\r
+sendIOManagerEvent (HsWord32 event)\r
{\r
#if defined(THREADED_RTS)\r
// debugBelch("sendIOManagerEvent: %d\n", event);\r
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