summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
dc84ee4)
Cleaning up the foreign object naming mess:
* Renamed the primop from makeForeignObj# to mkForeignObj#, this
is more consistent with the old Foreign.mkForeignObj.
* PrelForeign now exports makeForeignObj with the new signature.
* freeFile.c now uses StgAddr instead of StgForeignObj, this
removes the need for some fixIOs.
* Lots of import tweaking to prepare The Big Foreign Renamer,
which will move most of Foreign to ForeignObj, and FFI to Foreign.
Note: I've tried to track the changes in the interpreter sources, but
didn't test them.
16 files changed:
| UnblockAsyncExceptionsOp
-- foreign objects
| UnblockAsyncExceptionsOp
-- foreign objects
| WriteForeignObjOp
-- weak pointers
| WriteForeignObjOp
-- weak pointers
tagOf_PrimOp PutMVarOp = ILIT(219)
tagOf_PrimOp SameMVarOp = ILIT(220)
tagOf_PrimOp IsEmptyMVarOp = ILIT(221)
tagOf_PrimOp PutMVarOp = ILIT(219)
tagOf_PrimOp SameMVarOp = ILIT(220)
tagOf_PrimOp IsEmptyMVarOp = ILIT(221)
-tagOf_PrimOp MakeForeignObjOp = ILIT(222)
+tagOf_PrimOp MkForeignObjOp = ILIT(222)
tagOf_PrimOp WriteForeignObjOp = ILIT(223)
tagOf_PrimOp MkWeakOp = ILIT(224)
tagOf_PrimOp DeRefWeakOp = ILIT(225)
tagOf_PrimOp WriteForeignObjOp = ILIT(223)
tagOf_PrimOp MkWeakOp = ILIT(224)
tagOf_PrimOp DeRefWeakOp = ILIT(225)
PutMVarOp,
SameMVarOp,
IsEmptyMVarOp,
PutMVarOp,
SameMVarOp,
IsEmptyMVarOp,
WriteForeignObjOp,
MkWeakOp,
DeRefWeakOp,
WriteForeignObjOp,
MkWeakOp,
DeRefWeakOp,
%************************************************************************
\begin{code}
%************************************************************************
\begin{code}
-primOpInfo MakeForeignObjOp
- = mkGenPrimOp SLIT("makeForeignObj#") []
+primOpInfo MkForeignObjOp
+ = mkGenPrimOp SLIT("mkForeignObj#") []
[addrPrimTy, realWorldStatePrimTy]
(unboxedPair [realWorldStatePrimTy, foreignObjPrimTy])
[addrPrimTy, realWorldStatePrimTy]
(unboxedPair [realWorldStatePrimTy, foreignObjPrimTy])
MkWeakOp -> True
FinalizeWeakOp -> True
MakeStableNameOp -> True
MkWeakOp -> True
FinalizeWeakOp -> True
MakeStableNameOp -> True
- MakeForeignObjOp -> True
NewMutVarOp -> True
NewMVarOp -> True
ForkOp -> True
NewMutVarOp -> True
NewMVarOp -> True
ForkOp -> True
primOpHasSideEffects YieldOp = True
primOpHasSideEffects SeqOp = True
primOpHasSideEffects YieldOp = True
primOpHasSideEffects SeqOp = True
-primOpHasSideEffects MakeForeignObjOp = True
+primOpHasSideEffects MkForeignObjOp = True
primOpHasSideEffects WriteForeignObjOp = True
primOpHasSideEffects MkWeakOp = True
primOpHasSideEffects DeRefWeakOp = True
primOpHasSideEffects WriteForeignObjOp = True
primOpHasSideEffects MkWeakOp = True
primOpHasSideEffects DeRefWeakOp = True
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: PrimOps.h,v 1.49 2000/04/05 14:26:31 panne Exp $
+ * $Id: PrimOps.h,v 1.50 2000/04/11 20:44:18 panne Exp $
*
* (c) The GHC Team, 1998-1999
*
*
* (c) The GHC Team, 1998-1999
*
#define ForeignObj_CLOSURE_DATA(c) (((StgForeignObj *)c)->data)
#define ForeignObj_CLOSURE_DATA(c) (((StgForeignObj *)c)->data)
-EF_(makeForeignObjzh_fast);
+EF_(mkForeignObjzh_fast);
#define writeForeignObjzh(res,datum) \
(ForeignObj_CLOSURE_DATA(res) = (P_)(datum))
#define writeForeignObjzh(res,datum) \
(ForeignObj_CLOSURE_DATA(res) = (P_)(datum))
* Hugs version 1.4, December 1997
*
* $RCSfile: interface.c,v $
* Hugs version 1.4, December 1997
*
* $RCSfile: interface.c,v $
- * $Revision: 1.51 $
- * $Date: 2000/04/11 16:49:20 $
+ * $Revision: 1.52 $
+ * $Date: 2000/04/11 20:44:18 $
* ------------------------------------------------------------------------*/
#include "hugsbasictypes.h"
* ------------------------------------------------------------------------*/
#include "hugsbasictypes.h"
Sym(int2Integerzh_fast) \
Sym(stg_gc_unbx_r1) \
Sym(ErrorHdrHook) \
Sym(int2Integerzh_fast) \
Sym(stg_gc_unbx_r1) \
Sym(ErrorHdrHook) \
- Sym(makeForeignObjzh_fast) \
+ Sym(mkForeignObjzh_fast) \
Sym(__encodeDouble) \
Sym(decodeDoublezh_fast) \
Sym(isDoubleNaN) \
Sym(__encodeDouble) \
Sym(decodeDoublezh_fast) \
Sym(isDoubleNaN) \
#ifdef PROVIDE_FOREIGN
data ForeignObj
#ifdef PROVIDE_FOREIGN
data ForeignObj
-makeForeignObj :: Addr -> IO ForeignObj
-makeForeignObj = primMakeForeignObj
+mkForeignObj :: Addr -> IO ForeignObj
+mkForeignObj = primMkForeignObj
#endif
#ifdef PROVIDE_WEAK
#endif
#ifdef PROVIDE_WEAK
#ifndef __PARALLEL_HASKELL__
ForeignObj(..),
makeForeignObj,
#ifndef __PARALLEL_HASKELL__
ForeignObj(..),
makeForeignObj,
+ -- SUP: deprecated
+ mkForeignObj,
writeForeignObj
#endif
) where
writeForeignObj
#endif
) where
import PrelBase
import PrelAddr
import PrelGHC
import PrelBase
import PrelAddr
import PrelGHC
+import PrelWeak ( addForeignFinalizer )
%* *
%*********************************************************
%* *
%*********************************************************
+mkForeignObj and writeForeignObj are the building blocks
+for makeForeignObj, they can probably be nuked in the future.
+
\begin{code}
#ifndef __PARALLEL_HASKELL__
--instance CCallable ForeignObj
--instance CCallable ForeignObj#
\begin{code}
#ifndef __PARALLEL_HASKELL__
--instance CCallable ForeignObj
--instance CCallable ForeignObj#
-makeForeignObj :: Addr -> IO ForeignObj
-makeForeignObj (A# obj) = IO ( \ s# ->
- case makeForeignObj# obj s# of
- (# s1#, fo# #) -> (# s1#, ForeignObj fo# #) )
+makeForeignObj :: Addr -> IO () -> IO ForeignObj
+makeForeignObj addr finalizer = do
+ fObj <- mkForeignObj addr
+ addForeignFinalizer fObj finalizer
+ return fObj
---makeForeignObj :: Addr -> Addr -> IO ForeignObj
-writeForeignObj :: ForeignObj -> Addr -> IO ()
+mkForeignObj :: Addr -> IO ForeignObj
+mkForeignObj (A# obj) = IO ( \ s# ->
+ case mkForeignObj# obj s# of
+ (# s1#, fo# #) -> (# s1#, ForeignObj fo# #) )
+writeForeignObj :: ForeignObj -> Addr -> IO ()
writeForeignObj (ForeignObj fo#) (A# datum#) = IO ( \ s# ->
case writeForeignObj# fo# datum# s# of { s1# -> (# s1#, () #) } )
#endif /* !__PARALLEL_HASKELL__ */
writeForeignObj (ForeignObj fo#) (A# datum#) = IO ( \ s# ->
case writeForeignObj# fo# datum# s# of { s1# -> (# s1#, () #) } )
#endif /* !__PARALLEL_HASKELL__ */
finalizzeWeakzh
ForeignObjzh
finalizzeWeakzh
ForeignObjzh
writeForeignObjzh
StablePtrzh
writeForeignObjzh
StablePtrzh
nullFile__ :: FILE_OBJECT
nullFile__ =
#ifndef __PARALLEL_HASKELL__
nullFile__ :: FILE_OBJECT
nullFile__ =
#ifndef __PARALLEL_HASKELL__
- unsafePerformIO (makeForeignObj nullAddr)
+ unsafePerformIO (makeForeignObj nullAddr (return ()))
\begin{code}
foreign import "libHS_cbits" "freeStdFileObject" unsafe
\begin{code}
foreign import "libHS_cbits" "freeStdFileObject" unsafe
- freeStdFileObject :: FILE_OBJECT -> IO ()
+ freeStdFileObject :: Addr -> IO ()
foreign import "libHS_cbits" "freeFileObject" unsafe
foreign import "libHS_cbits" "freeFileObject" unsafe
- freeFileObject :: FILE_OBJECT -> IO ()
+ freeFileObject :: Addr -> IO ()
(0::Int){-writeable-} -- ConcHask: SAFE, won't block
#ifndef __PARALLEL_HASKELL__
(0::Int){-writeable-} -- ConcHask: SAFE, won't block
#ifndef __PARALLEL_HASKELL__
- fo <- makeForeignObj fo
- addForeignFinalizer fo (freeStdFileObject fo)
+ fo <- makeForeignObj fo (freeStdFileObject fo)
(1::Int){-readable-} -- ConcHask: SAFE, won't block
#ifndef __PARALLEL_HASKELL__
(1::Int){-readable-} -- ConcHask: SAFE, won't block
#ifndef __PARALLEL_HASKELL__
- fo <- makeForeignObj fo
- addForeignFinalizer fo (freeStdFileObject fo)
+ fo <- makeForeignObj fo (freeStdFileObject fo)
#endif
(bm, bf_size) <- getBMode__ fo
mkBuffer__ fo bf_size
#endif
(bm, bf_size) <- getBMode__ fo
mkBuffer__ fo bf_size
(0::Int){-writeable-} -- ConcHask: SAFE, won't block
#ifndef __PARALLEL_HASKELL__
(0::Int){-writeable-} -- ConcHask: SAFE, won't block
#ifndef __PARALLEL_HASKELL__
- fo <- makeForeignObj fo
- addForeignFinalizer fo (freeStdFileObject fo)
+ fo <- makeForeignObj fo (freeStdFileObject fo)
#endif
hdl <- newHandle (Handle__ fo WriteHandle NoBuffering "stderr")
-- when stderr and stdout are both connected to a terminal, ensure
#endif
hdl <- newHandle (Handle__ fo WriteHandle NoBuffering "stderr")
-- when stderr and stdout are both connected to a terminal, ensure
(binary::Int) -- ConcHask: SAFE, won't block
if fo /= nullAddr then do
#ifndef __PARALLEL_HASKELL__
(binary::Int) -- ConcHask: SAFE, won't block
if fo /= nullAddr then do
#ifndef __PARALLEL_HASKELL__
- fo <- makeForeignObj fo
- addForeignFinalizer fo (freeFileObject fo)
+ fo <- makeForeignObj fo (freeFileObject fo)
#endif
(bm, bf_size) <- getBMode__ fo
mkBuffer__ fo bf_size
#endif
(bm, bf_size) <- getBMode__ fo
mkBuffer__ fo bf_size
import PrelGHC
import PrelBase
import PrelMaybe
import PrelGHC
import PrelBase
import PrelMaybe
-import PrelIOBase
-import PrelForeign
+-- NOTE: To break a cycle, ForeignObj is not in PrelForeign, but PrelIOBase!
+import PrelIOBase ( IO(..), ForeignObj(..) )
#ifndef __PARALLEL_HASKELL__
#ifndef __PARALLEL_HASKELL__
/*
* (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
*
/*
* (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
*
- * $Id: freeFile.c,v 1.9 2000/03/28 08:49:56 simonmar Exp $
+ * $Id: freeFile.c,v 1.10 2000/04/11 20:44:18 panne Exp $
before we *really* shut down (dumping stats etc.)
*/
void
before we *really* shut down (dumping stats etc.)
*/
void
-freeStdFile(StgForeignPtr fp)
-freeStdFileObject(StgForeignPtr ptr)
+freeStdFileObject(StgAddr ptr)
{
IOFileObject* fo = (IOFileObject*)ptr;
int rc;
{
IOFileObject* fo = (IOFileObject*)ptr;
int rc;
-freeFileObject(StgForeignPtr ptr)
+freeFileObject(StgAddr ptr)
{
/*
* The finaliser for the file objects embedded in Handles. The RTS
{
/*
* The finaliser for the file objects embedded in Handles. The RTS
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: stgio.h,v 1.17 2000/03/10 15:23:40 simonmar Exp $
+ * $Id: stgio.h,v 1.18 2000/04/11 20:44:18 panne Exp $
*
* (c) The GRASP/AQUA Project, Glasgow University, 1994-1999
*
*
* (c) The GRASP/AQUA Project, Glasgow University, 1994-1999
*
void flushConnectedBuf (StgForeignPtr);
/* freeFile.c */
void flushConnectedBuf (StgForeignPtr);
/* freeFile.c */
-void freeStdFile (StgForeignPtr);
-void freeFile (StgForeignPtr);
-void freeStdFileObject (StgForeignPtr);
-void freeFileObject (StgForeignPtr);
+void freeStdFile (StgAddr);
+void freeStdFileObject (StgAddr);
+void freeFileObject (StgAddr);
StgAddr ref_freeStdFileObject (void);
StgAddr ref_freeFileObject (void);
StgAddr ref_freeStdFileObject (void);
StgAddr ref_freeFileObject (void);
* Copyright (c) 1994-1998.
*
* $RCSfile: Assembler.c,v $
* Copyright (c) 1994-1998.
*
* $RCSfile: Assembler.c,v $
- * $Revision: 1.24 $
- * $Date: 2000/03/20 04:26:24 $
+ * $Revision: 1.25 $
+ * $Date: 2000/04/11 20:44:19 $
*
* This module provides functions to construct BCOs and other closures
* required by the bytecode compiler.
*
* This module provides functions to construct BCOs and other closures
* required by the bytecode compiler.
#ifdef PROVIDE_FOREIGN
/* ForeignObj# operations */
#ifdef PROVIDE_FOREIGN
/* ForeignObj# operations */
- , { "primMakeForeignObj", "A", "f", MONAD_IO, i_PRIMOP2, i_makeForeignObj }
+ , { "primMkForeignObj", "A", "f", MONAD_IO, i_PRIMOP2, i_mkForeignObj }
#endif
#ifdef PROVIDE_WEAK
/* WeakPair# operations */
#endif
#ifdef PROVIDE_WEAK
/* WeakPair# operations */
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: Bytecodes.h,v 1.14 2000/03/20 04:26:24 andy Exp $
+ * $Id: Bytecodes.h,v 1.15 2000/04/11 20:44:19 panne Exp $
*
* (c) The GHC Team, 1998-1999
*
*
* (c) The GHC Team, 1998-1999
*
#ifdef PROVIDE_FOREIGN
/* ForeignObj# operations */
#ifdef PROVIDE_FOREIGN
/* ForeignObj# operations */
, indexCharOffForeignObj
, indexIntOffForeignObj
, indexCharOffForeignObj
, indexIntOffForeignObj
* Copyright (c) 1994-1998.
*
* $RCSfile: Evaluator.c,v $
* Copyright (c) 1994-1998.
*
* $RCSfile: Evaluator.c,v $
- * $Revision: 1.46 $
- * $Date: 2000/04/03 15:24:21 $
+ * $Revision: 1.47 $
+ * $Date: 2000/04/11 20:44:19 $
* ---------------------------------------------------------------------------*/
#include "Rts.h"
* ---------------------------------------------------------------------------*/
#include "Rts.h"
#endif
#ifdef PROVIDE_FOREIGN
/* ForeignObj# operations */
#endif
#ifdef PROVIDE_FOREIGN
/* ForeignObj# operations */
{
StgForeignObj *result
= stgCast(StgForeignObj*,allocate(sizeofW(StgForeignObj)));
{
StgForeignObj *result
= stgCast(StgForeignObj*,allocate(sizeofW(StgForeignObj)));
lookupHashTable @ 301 ;
lookupStableName @ 302 ;
main_threads @ 304 ;
lookupHashTable @ 301 ;
lookupStableName @ 302 ;
main_threads @ 304 ;
- makeForeignObjzh_fast @ 305 ;
+ mkForeignObjzh_fast @ 305 ;
makeStableNamezh_fast @ 306 ;
markStablePtrTable @ 307 ;
mblocks_allocated @ 308 ;
makeStableNamezh_fast @ 306 ;
markStablePtrTable @ 307 ;
mblocks_allocated @ 308 ;
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: PrimOps.hc,v 1.49 2000/03/21 11:33:12 rrt Exp $
+ * $Id: PrimOps.hc,v 1.50 2000/04/11 20:44:19 panne Exp $
*
* (c) The GHC Team, 1998-2000
*
*
* (c) The GHC Team, 1998-2000
*
-------------------------------------------------------------------------- */
#ifndef PAR
-------------------------------------------------------------------------- */
#ifndef PAR
-FN_(makeForeignObjzh_fast)
+FN_(mkForeignObjzh_fast)
{
/* R1.p = ptr to foreign object,
*/
StgForeignObj *result;
FB_
{
/* R1.p = ptr to foreign object,
*/
StgForeignObj *result;
FB_
- HP_CHK_GEN_TICKY(sizeofW(StgForeignObj), NO_PTRS, makeForeignObjzh_fast,);
+ HP_CHK_GEN_TICKY(sizeofW(StgForeignObj), NO_PTRS, mkForeignObjzh_fast,);
TICK_ALLOC_PRIM(sizeofW(StgHeader),
sizeofW(StgForeignObj)-sizeofW(StgHeader), 0);
CCS_ALLOC(CCCS,sizeofW(StgForeignObj)); /* ccs prof */
TICK_ALLOC_PRIM(sizeofW(StgHeader),
sizeofW(StgForeignObj)-sizeofW(StgHeader), 0);
CCS_ALLOC(CCCS,sizeofW(StgForeignObj)); /* ccs prof */
__export IOExts IOArray IORef boundsIOArray fixIO freeHaskellFunctionPtr freezzeIOArray hGetBuf hGetBufBA hGetBufBAFull hGetBufFull hPutBuf hPutBufBA hPutBufBAFull hPutBufFull hSetBinaryMode hTell mkWeakIORef newIOArray newIORef performGC readIOArray readIORef thawIOArray trace unsafeFreezzeIOArray unsafePtrEq unsafeThawIOArray updateIORef withHandleFor withStderr withStdin withStdout writeIOArray writeIORef;
__export IOExts IOArray IORef boundsIOArray fixIO freeHaskellFunctionPtr freezzeIOArray hGetBuf hGetBufBA hGetBufBAFull hGetBufFull hPutBuf hPutBufBA hPutBufBAFull hPutBufFull hSetBinaryMode hTell mkWeakIORef newIOArray newIORef performGC readIOArray readIORef thawIOArray trace unsafeFreezzeIOArray unsafePtrEq unsafeThawIOArray updateIORef withHandleFor withStderr withStdin withStdout writeIOArray writeIORef;
-__export PrelGHC Addrzh Arrayzh ByteArrayzh CCallable CReturnable Charzh Doublezh Floatzh ForeignObjzh Int64zh Intzh MVarzh MutVarzh MutableArrayzh MutableByteArrayzh RealWorld StableNamezh StablePtrzh Statezh ThreadIdzh Weakzh Word64zh Wordzh ZLzmzgZR acosDoublezh acosFloatzh addIntCzh addr2Integerzh addr2Intzh andzh asinDoublezh asinFloatzh assert atanDoublezh atanFloatzh blockAsyncExceptionszh catchzh chrzh cmpIntegerIntzh cmpIntegerzh cosDoublezh cosFloatzh coshDoublezh coshFloatzh dataToTagzh deRefStablePtrzh deRefWeakzh decodeDoublezh decodeFloatzh delayzh divExactIntegerzh divModIntegerzh divideFloatzh double2Floatzh double2Intzh eqAddrzh eqCharzh eqFloatzh eqStableNamezh eqStablePtrzh eqWordzh expDoublezh expFloatzh finalizzeWeakzh float2Doublezh float2Intzh forkzh gcdIntegerIntzh gcdIntegerzh gcdIntzh geAddrzh geCharzh geFloatzh geWordzh getTagzh gtAddrzh gtCharzh gtFloatzh gtWordzh iShiftLzh iShiftRAzh iShiftRLzh indexAddrArrayzh indexAddrOffAddrzh indexAddrOffForeignObjzh indexArrayzh indexCharArrayzh indexCharOffAddrzh indexCharOffForeignObjzh indexDoubleArrayzh indexDoubleOffAddrzh indexDoubleOffForeignObjzh indexFloatArrayzh indexFloatOffAddrzh indexFloatOffForeignObjzh indexInt64Arrayzh indexInt64OffAddrzh indexInt64OffForeignObjzh indexIntArrayzh indexIntOffAddrzh indexIntOffForeignObjzh indexStablePtrArrayzh indexStablePtrOffAddrzh indexStablePtrOffForeignObjzh indexWord64Arrayzh indexWord64OffAddrzh indexWord64OffForeignObjzh indexWordArrayzh indexWordOffAddrzh indexWordOffForeignObjzh int2Addrzh int2Doublezh int2Floatzh int2Integerzh int2Wordzh int64ToIntegerzh integer2Intzh integer2Wordzh integerToInt64zh integerToWord64zh isEmptyMVarzh killThreadzh leAddrzh leCharzh leFloatzh leWordzh logDoublezh logFloatzh ltAddrzh ltCharzh ltFloatzh ltWordzh makeForeignObjzh makeStableNamezh makeStablePtrzh minusFloatzh minusIntegerzh mkWeakzh mulIntCzh myThreadIdzh neAddrzh neCharzh neFloatzh neWordzh negateDoublezh negateFloatzh negateIntzh newAddrArrayzh newArrayzh newCharArrayzh newDoubleArrayzh newFloatArrayzh newIntArrayzh newMVarzh newMutVarzh newStablePtrArrayzh newWordArrayzh notzh ordzh orzh parAtAbszh parAtForNowzh parAtRelzh parAtzh parGlobalzh parLocalzh parzh plusFloatzh plusIntegerzh powerFloatzh putMVarzh quotIntegerzh quotIntzh quotRemIntegerzh quotWordzh raisezh readAddrArrayzh readAddrOffAddrzh readArrayzh readCharArrayzh readCharOffAddrzh readDoubleArrayzh readDoubleOffAddrzh readFloatArrayzh readFloatOffAddrzh readForeignObjOffAddrzh readInt64Arrayzh readInt64OffAddrzh readIntArrayzh readIntOffAddrzh readMutVarzh readStablePtrArrayzh readStablePtrOffAddrzh readWord64Arrayzh readWord64OffAddrzh readWordArrayzh readWordOffAddrzh realWorldzh reallyUnsafePtrEqualityzh remIntegerzh remIntzh remWordzh sameMVarzh sameMutVarzh sameMutableArrayzh sameMutableByteArrayzh seqzh shiftLzh shiftRLzh sinDoublezh sinFloatzh sinhDoublezh sinhFloatzh sizzeofByteArrayzh sizzeofMutableByteArrayzh sqrtDoublezh sqrtFloatzh stableNameToIntzh subIntCzh tagToEnumzh takeMVarzh tanDoublezh tanFloatzh tanhDoublezh tanhFloatzh timesFloatzh timesIntegerzh unblockAsyncExceptionszh unsafeCoercezh unsafeFreezzeArrayzh unsafeFreezzeByteArrayzh unsafeThawArrayzh waitReadzh waitWritezh word2Integerzh word2Intzh word64ToIntegerzh writeAddrArrayzh writeAddrOffAddrzh writeArrayzh writeCharArrayzh writeCharOffAddrzh writeDoubleArrayzh writeDoubleOffAddrzh writeFloatArrayzh writeFloatOffAddrzh writeForeignObjOffAddrzh writeForeignObjzh writeInt64Arrayzh writeInt64OffAddrzh writeIntArrayzh writeIntOffAddrzh writeMutVarzh writeStablePtrArrayzh writeStablePtrOffAddrzh writeWord64Arrayzh writeWord64OffAddrzh writeWordArrayzh writeWordOffAddrzh xorzh yieldzh zezezh zezezhzh zgzezh zgzezhzh zgzh zgzhzh zlzezh zlzezhzh zlzh zlzhzh zmzh zmzhzh zpzh zpzhzh zszezh zszezhzh zszhzh ztzh ztzhzh ztztzhzh;
+__export PrelGHC Addrzh Arrayzh ByteArrayzh CCallable CReturnable Charzh Doublezh Floatzh ForeignObjzh Int64zh Intzh MVarzh MutVarzh MutableArrayzh MutableByteArrayzh RealWorld StableNamezh StablePtrzh Statezh ThreadIdzh Weakzh Word64zh Wordzh ZLzmzgZR acosDoublezh acosFloatzh addIntCzh addr2Integerzh addr2Intzh andzh asinDoublezh asinFloatzh assert atanDoublezh atanFloatzh blockAsyncExceptionszh catchzh chrzh cmpIntegerIntzh cmpIntegerzh cosDoublezh cosFloatzh coshDoublezh coshFloatzh dataToTagzh deRefStablePtrzh deRefWeakzh decodeDoublezh decodeFloatzh delayzh divExactIntegerzh divModIntegerzh divideFloatzh double2Floatzh double2Intzh eqAddrzh eqCharzh eqFloatzh eqStableNamezh eqStablePtrzh eqWordzh expDoublezh expFloatzh finalizzeWeakzh float2Doublezh float2Intzh forkzh gcdIntegerIntzh gcdIntegerzh gcdIntzh geAddrzh geCharzh geFloatzh geWordzh getTagzh gtAddrzh gtCharzh gtFloatzh gtWordzh iShiftLzh iShiftRAzh iShiftRLzh indexAddrArrayzh indexAddrOffAddrzh indexAddrOffForeignObjzh indexArrayzh indexCharArrayzh indexCharOffAddrzh indexCharOffForeignObjzh indexDoubleArrayzh indexDoubleOffAddrzh indexDoubleOffForeignObjzh indexFloatArrayzh indexFloatOffAddrzh indexFloatOffForeignObjzh indexInt64Arrayzh indexInt64OffAddrzh indexInt64OffForeignObjzh indexIntArrayzh indexIntOffAddrzh indexIntOffForeignObjzh indexStablePtrArrayzh indexStablePtrOffAddrzh indexStablePtrOffForeignObjzh indexWord64Arrayzh indexWord64OffAddrzh indexWord64OffForeignObjzh indexWordArrayzh indexWordOffAddrzh indexWordOffForeignObjzh int2Addrzh int2Doublezh int2Floatzh int2Integerzh int2Wordzh int64ToIntegerzh integer2Intzh integer2Wordzh integerToInt64zh integerToWord64zh isEmptyMVarzh killThreadzh leAddrzh leCharzh leFloatzh leWordzh logDoublezh logFloatzh ltAddrzh ltCharzh ltFloatzh ltWordzh mkForeignObjzh makeStableNamezh makeStablePtrzh minusFloatzh minusIntegerzh mkWeakzh mulIntCzh myThreadIdzh neAddrzh neCharzh neFloatzh neWordzh negateDoublezh negateFloatzh negateIntzh newAddrArrayzh newArrayzh newCharArrayzh newDoubleArrayzh newFloatArrayzh newIntArrayzh newMVarzh newMutVarzh newStablePtrArrayzh newWordArrayzh notzh ordzh orzh parAtAbszh parAtForNowzh parAtRelzh parAtzh parGlobalzh parLocalzh parzh plusFloatzh plusIntegerzh powerFloatzh putMVarzh quotIntegerzh quotIntzh quotRemIntegerzh quotWordzh raisezh readAddrArrayzh readAddrOffAddrzh readArrayzh readCharArrayzh readCharOffAddrzh readDoubleArrayzh readDoubleOffAddrzh readFloatArrayzh readFloatOffAddrzh readForeignObjOffAddrzh readInt64Arrayzh readInt64OffAddrzh readIntArrayzh readIntOffAddrzh readMutVarzh readStablePtrArrayzh readStablePtrOffAddrzh readWord64Arrayzh readWord64OffAddrzh readWordArrayzh readWordOffAddrzh realWorldzh reallyUnsafePtrEqualityzh remIntegerzh remIntzh remWordzh sameMVarzh sameMutVarzh sameMutableArrayzh sameMutableByteArrayzh seqzh shiftLzh shiftRLzh sinDoublezh sinFloatzh sinhDoublezh sinhFloatzh sizzeofByteArrayzh sizzeofMutableByteArrayzh sqrtDoublezh sqrtFloatzh stableNameToIntzh subIntCzh tagToEnumzh takeMVarzh tanDoublezh tanFloatzh tanhDoublezh tanhFloatzh timesFloatzh timesIntegerzh unblockAsyncExceptionszh unsafeCoercezh unsafeFreezzeArrayzh unsafeFreezzeByteArrayzh unsafeThawArrayzh waitReadzh waitWritezh word2Integerzh word2Intzh word64ToIntegerzh writeAddrArrayzh writeAddrOffAddrzh writeArrayzh writeCharArrayzh writeCharOffAddrzh writeDoubleArrayzh writeDoubleOffAddrzh writeFloatArrayzh writeFloatOffAddrzh writeForeignObjOffAddrzh writeForeignObjzh writeInt64Arrayzh writeInt64OffAddrzh writeIntArrayzh writeIntOffAddrzh writeMutVarzh writeStablePtrArrayzh writeStablePtrOffAddrzh writeWord64Arrayzh writeWord64OffAddrzh writeWordArrayzh writeWordOffAddrzh xorzh yieldzh zezezh zezezhzh zgzezh zgzezhzh zgzh zgzhzh zlzezh zlzezhzh zlzh zlzhzh zmzh zmzhzh zpzh zpzhzh zszezh zszezhzh zszhzh ztzh ztzhzh ztztzhzh;
__export PrelHandle HandlePosition HandlePosn{HandlePosn} IOModeEx{BinaryMode TextMode} hConnectTo hGetEcho hIsTerminalDevice hSetEcho openFileEx slurpFile;
__export PrelIOBase unsafeInterleaveIO unsafePerformIO;
1 data FooData = FooData ;
__export PrelHandle HandlePosition HandlePosn{HandlePosn} IOModeEx{BinaryMode TextMode} hConnectTo hGetEcho hIsTerminalDevice hSetEcho openFileEx slurpFile;
__export PrelIOBase unsafeInterleaveIO unsafePerformIO;
1 data FooData = FooData ;