From cd6055bc01f2b38bcd77b1b6943dda8dff3cb818 Mon Sep 17 00:00:00 2001 From: panne Date: Tue, 11 Apr 2000 20:44:20 +0000 Subject: [PATCH 1/1] [project @ 2000-04-11 20:44:17 by panne] 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. --- ghc/compiler/prelude/PrimOp.lhs | 14 +++++++------- ghc/includes/PrimOps.h | 4 ++-- ghc/interpreter/interface.c | 6 +++--- ghc/interpreter/prelude/Prelude.hs | 4 ++-- ghc/lib/std/PrelForeign.lhs | 22 ++++++++++++++++------ ghc/lib/std/PrelGHC.hi-boot | 2 +- ghc/lib/std/PrelHandle.lhs | 18 +++++++----------- ghc/lib/std/PrelWeak.lhs | 4 ++-- ghc/lib/std/cbits/freeFile.c | 8 ++++---- ghc/lib/std/cbits/stgio.h | 9 ++++----- ghc/rts/Assembler.c | 6 +++--- ghc/rts/Bytecodes.h | 4 ++-- ghc/rts/Evaluator.c | 6 +++--- ghc/rts/HSrts.def | 2 +- ghc/rts/PrimOps.hc | 6 +++--- ghc/tests/typecheck/should_compile/tc085.stderr | 2 +- 16 files changed, 61 insertions(+), 56 deletions(-) diff --git a/ghc/compiler/prelude/PrimOp.lhs b/ghc/compiler/prelude/PrimOp.lhs index b16df06..7224510 100644 --- a/ghc/compiler/prelude/PrimOp.lhs +++ b/ghc/compiler/prelude/PrimOp.lhs @@ -185,7 +185,7 @@ data PrimOp | UnblockAsyncExceptionsOp -- foreign objects - | MakeForeignObjOp + | MkForeignObjOp | WriteForeignObjOp -- weak pointers @@ -460,7 +460,7 @@ tagOf_PrimOp TakeMVarOp = ILIT(218) 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) @@ -750,7 +750,7 @@ allThePrimOps -- Except CCall, which is really a family of primops PutMVarOp, SameMVarOp, IsEmptyMVarOp, - MakeForeignObjOp, + MkForeignObjOp, WriteForeignObjOp, MkWeakOp, DeRefWeakOp, @@ -1600,8 +1600,8 @@ primOpInfo MyThreadIdOp %************************************************************************ \begin{code} -primOpInfo MakeForeignObjOp - = mkGenPrimOp SLIT("makeForeignObj#") [] +primOpInfo MkForeignObjOp + = mkGenPrimOp SLIT("mkForeignObj#") [] [addrPrimTy, realWorldStatePrimTy] (unboxedPair [realWorldStatePrimTy, foreignObjPrimTy]) @@ -1931,7 +1931,7 @@ primOpOutOfLine op MkWeakOp -> True FinalizeWeakOp -> True MakeStableNameOp -> True - MakeForeignObjOp -> True + MkForeignObjOp -> True NewMutVarOp -> True NewMVarOp -> True ForkOp -> True @@ -2041,7 +2041,7 @@ primOpHasSideEffects KillThreadOp = True primOpHasSideEffects YieldOp = True primOpHasSideEffects SeqOp = True -primOpHasSideEffects MakeForeignObjOp = True +primOpHasSideEffects MkForeignObjOp = True primOpHasSideEffects WriteForeignObjOp = True primOpHasSideEffects MkWeakOp = True primOpHasSideEffects DeRefWeakOp = True diff --git a/ghc/includes/PrimOps.h b/ghc/includes/PrimOps.h index 8510c19..4ec2779 100644 --- a/ghc/includes/PrimOps.h +++ b/ghc/includes/PrimOps.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $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 * @@ -857,7 +857,7 @@ EF_(finalizzeWeakzh_fast); #define ForeignObj_CLOSURE_DATA(c) (((StgForeignObj *)c)->data) -EF_(makeForeignObjzh_fast); +EF_(mkForeignObjzh_fast); #define writeForeignObjzh(res,datum) \ (ForeignObj_CLOSURE_DATA(res) = (P_)(datum)) diff --git a/ghc/interpreter/interface.c b/ghc/interpreter/interface.c index ce57edc..eb9b493 100644 --- a/ghc/interpreter/interface.c +++ b/ghc/interpreter/interface.c @@ -7,8 +7,8 @@ * 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" @@ -2543,7 +2543,7 @@ Type type; { Sym(int2Integerzh_fast) \ Sym(stg_gc_unbx_r1) \ Sym(ErrorHdrHook) \ - Sym(makeForeignObjzh_fast) \ + Sym(mkForeignObjzh_fast) \ Sym(__encodeDouble) \ Sym(decodeDoublezh_fast) \ Sym(isDoubleNaN) \ diff --git a/ghc/interpreter/prelude/Prelude.hs b/ghc/interpreter/prelude/Prelude.hs index 19a1af4..124245c 100644 --- a/ghc/interpreter/prelude/Prelude.hs +++ b/ghc/interpreter/prelude/Prelude.hs @@ -1190,8 +1190,8 @@ data StablePtr a #ifdef PROVIDE_FOREIGN data ForeignObj -makeForeignObj :: Addr -> IO ForeignObj -makeForeignObj = primMakeForeignObj +mkForeignObj :: Addr -> IO ForeignObj +mkForeignObj = primMkForeignObj #endif #ifdef PROVIDE_WEAK diff --git a/ghc/lib/std/PrelForeign.lhs b/ghc/lib/std/PrelForeign.lhs index ef4f815..87905fb 100644 --- a/ghc/lib/std/PrelForeign.lhs +++ b/ghc/lib/std/PrelForeign.lhs @@ -12,6 +12,8 @@ module PrelForeign ( #ifndef __PARALLEL_HASKELL__ ForeignObj(..), makeForeignObj, + -- SUP: deprecated + mkForeignObj, writeForeignObj #endif ) where @@ -21,6 +23,7 @@ import PrelST import PrelBase import PrelAddr import PrelGHC +import PrelWeak ( addForeignFinalizer ) \end{code} @@ -30,19 +33,26 @@ import PrelGHC %* * %********************************************************* +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# -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__ */ diff --git a/ghc/lib/std/PrelGHC.hi-boot b/ghc/lib/std/PrelGHC.hi-boot index 84e7034..460fef0 100644 --- a/ghc/lib/std/PrelGHC.hi-boot +++ b/ghc/lib/std/PrelGHC.hi-boot @@ -323,7 +323,7 @@ __export PrelGHC finalizzeWeakzh ForeignObjzh - makeForeignObjzh + mkForeignObjzh writeForeignObjzh StablePtrzh diff --git a/ghc/lib/std/PrelHandle.lhs b/ghc/lib/std/PrelHandle.lhs index 22ca0d6..f9ce8bc 100644 --- a/ghc/lib/std/PrelHandle.lhs +++ b/ghc/lib/std/PrelHandle.lhs @@ -129,7 +129,7 @@ file object reference. nullFile__ :: FILE_OBJECT nullFile__ = #ifndef __PARALLEL_HASKELL__ - unsafePerformIO (makeForeignObj nullAddr) + unsafePerformIO (makeForeignObj nullAddr (return ())) #else nullAddr #endif @@ -160,9 +160,9 @@ mkErrorHandle__ ioe = \begin{code} foreign import "libHS_cbits" "freeStdFileObject" unsafe - freeStdFileObject :: FILE_OBJECT -> IO () + freeStdFileObject :: Addr -> IO () foreign import "libHS_cbits" "freeFileObject" unsafe - freeFileObject :: FILE_OBJECT -> IO () + freeFileObject :: Addr -> IO () \end{code} @@ -190,8 +190,7 @@ stdout = unsafePerformIO (do (0::Int){-writeable-} -- ConcHask: SAFE, won't block #ifndef __PARALLEL_HASKELL__ - fo <- makeForeignObj fo - addForeignFinalizer fo (freeStdFileObject fo) + fo <- makeForeignObj fo (freeStdFileObject fo) #endif #ifdef __HUGS__ @@ -217,8 +216,7 @@ stdin = unsafePerformIO (do (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 @@ -242,8 +240,7 @@ stderr = unsafePerformIO (do (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 @@ -283,8 +280,7 @@ openFileEx f m = do (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 diff --git a/ghc/lib/std/PrelWeak.lhs b/ghc/lib/std/PrelWeak.lhs index c1d49fb..9548a19 100644 --- a/ghc/lib/std/PrelWeak.lhs +++ b/ghc/lib/std/PrelWeak.lhs @@ -12,8 +12,8 @@ module PrelWeak where 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__ diff --git a/ghc/lib/std/cbits/freeFile.c b/ghc/lib/std/cbits/freeFile.c index aecf498..9e4c530 100644 --- a/ghc/lib/std/cbits/freeFile.c +++ b/ghc/lib/std/cbits/freeFile.c @@ -1,7 +1,7 @@ /* * (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 $ * * Giving up files */ @@ -24,11 +24,11 @@ before we *really* shut down (dumping stats etc.) */ void -freeStdFile(StgForeignPtr fp) +freeStdFile(StgAddr fp) { return; } void -freeStdFileObject(StgForeignPtr ptr) +freeStdFileObject(StgAddr ptr) { IOFileObject* fo = (IOFileObject*)ptr; int rc; @@ -45,7 +45,7 @@ freeStdFileObject(StgForeignPtr ptr) } void -freeFileObject(StgForeignPtr ptr) +freeFileObject(StgAddr ptr) { /* * The finaliser for the file objects embedded in Handles. The RTS diff --git a/ghc/lib/std/cbits/stgio.h b/ghc/lib/std/cbits/stgio.h index 5203040..6c784da 100644 --- a/ghc/lib/std/cbits/stgio.h +++ b/ghc/lib/std/cbits/stgio.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $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 * @@ -117,10 +117,9 @@ StgInt flushReadBuffer (StgForeignPtr); 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); diff --git a/ghc/rts/Assembler.c b/ghc/rts/Assembler.c index b167f0d..5b6d9da 100644 --- a/ghc/rts/Assembler.c +++ b/ghc/rts/Assembler.c @@ -5,8 +5,8 @@ * 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. @@ -1372,7 +1372,7 @@ AsmPrim asmPrimOps[] = { #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 */ diff --git a/ghc/rts/Bytecodes.h b/ghc/rts/Bytecodes.h index e502b8f..f033a21 100644 --- a/ghc/rts/Bytecodes.h +++ b/ghc/rts/Bytecodes.h @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------------- - * $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 * @@ -390,7 +390,7 @@ typedef enum #ifdef PROVIDE_FOREIGN /* ForeignObj# operations */ - , i_makeForeignObj + , i_mkForeignObj , indexCharOffForeignObj , indexIntOffForeignObj diff --git a/ghc/rts/Evaluator.c b/ghc/rts/Evaluator.c index b7906f7..82603e0 100644 --- a/ghc/rts/Evaluator.c +++ b/ghc/rts/Evaluator.c @@ -5,8 +5,8 @@ * 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" @@ -2892,7 +2892,7 @@ static void* enterBCO_primop2 ( int primop2code, #endif #ifdef PROVIDE_FOREIGN /* ForeignObj# operations */ - case i_makeForeignObj: + case i_mkForeignObj: { StgForeignObj *result = stgCast(StgForeignObj*,allocate(sizeofW(StgForeignObj))); diff --git a/ghc/rts/HSrts.def b/ghc/rts/HSrts.def index edb7004..8737d21 100644 --- a/ghc/rts/HSrts.def +++ b/ghc/rts/HSrts.def @@ -291,7 +291,7 @@ EXPORTS lookupHashTable @ 301 ; lookupStableName @ 302 ; main_threads @ 304 ; - makeForeignObjzh_fast @ 305 ; + mkForeignObjzh_fast @ 305 ; makeStableNamezh_fast @ 306 ; markStablePtrTable @ 307 ; mblocks_allocated @ 308 ; diff --git a/ghc/rts/PrimOps.hc b/ghc/rts/PrimOps.hc index 94dc251..27f6f84 100644 --- a/ghc/rts/PrimOps.hc +++ b/ghc/rts/PrimOps.hc @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $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 * @@ -324,14 +324,14 @@ FN_(newMutVarzh_fast) -------------------------------------------------------------------------- */ #ifndef PAR -FN_(makeForeignObjzh_fast) +FN_(mkForeignObjzh_fast) { /* 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 */ diff --git a/ghc/tests/typecheck/should_compile/tc085.stderr b/ghc/tests/typecheck/should_compile/tc085.stderr index 7c74acc..ca7b519 100644 --- a/ghc/tests/typecheck/should_compile/tc085.stderr +++ b/ghc/tests/typecheck/should_compile/tc085.stderr @@ -1,5 +1,5 @@ __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 ; -- 1.7.10.4