From 7a4dfe3ef028a40cf8815b7c55215eb3cc148a09 Mon Sep 17 00:00:00 2001 From: atzedijkstra Date: Tue, 23 Mar 2010 14:49:41 +0000 Subject: [PATCH] HsFFI.h + required refactoring of RTS include files. --- EHC/ehclib/base/include/HsBaseConfig.h.in | 26 ++-- EHC/src/ehc/Ty/Trf/Canonic.cag | 4 +- EHC/src/rts/C/prim.cc | 11 -- EHC/src/rts/HsFFI.ch | 162 ++++++++++++++++++++++ EHC/src/rts/base/sizes.ch | 30 ++++ EHC/src/rts/bc/base.ch | 32 +++++ EHC/src/rts/bc/prim-bool.cc | 19 +++ EHC/src/rts/bc/prim.cc | 34 ----- EHC/src/rts/bc/types.ch | 4 - EHC/src/rts/config.ch.in | 11 ++ EHC/src/rts/files.mk | 3 + EHC/src/rts/prim-shared.cc | 29 ++++ EHC/src/rts/rts.ch | 3 - EHC/src/rts/rtsbase.ch | 15 +- EHC/text/InternalDocEhcTechnical.cltex | 4 +- 15 files changed, 310 insertions(+), 77 deletions(-) create mode 100644 EHC/src/rts/HsFFI.ch create mode 100644 EHC/src/rts/bc/base.ch create mode 100644 EHC/src/rts/bc/prim-bool.cc diff --git a/EHC/ehclib/base/include/HsBaseConfig.h.in b/EHC/ehclib/base/include/HsBaseConfig.h.in index 960ac58ea..adf256d51 100644 --- a/EHC/ehclib/base/include/HsBaseConfig.h.in +++ b/EHC/ehclib/base/include/HsBaseConfig.h.in @@ -307,19 +307,19 @@ #ifdef __UHC_BUILDS_O__ #if defined(__UHC_TARGET_BC__) || defined(__UHC_TARGET_C__) -# define HsBool Word -# define HsInt Word -# define HsWord64 Word64 -# define HsWord32 Word32 -# define HsWord16 Word16 -# define HsWord8 Word8 -# ifdef __UHC_TARGET_BC__ -# define HS_BOOL_FALSE gb_False -# define HS_BOOL_TRUE gb_True -# else -# define HS_BOOL_FALSE 0 -# define HS_BOOL_TRUE 1 -# endif +// # define HsBool Word +// # define HsInt Word +// # define HsWord64 Word64 +// # define HsWord32 Word32 +// # define HsWord16 Word16 +// # define HsWord8 Word8 +// # ifdef __UHC_TARGET_BC__ +// # define HS_BOOL_FALSE gb_False +// # define HS_BOOL_TRUE gb_True +// # else +// # define HS_BOOL_FALSE 0 +// # define HS_BOOL_TRUE 1 +// # endif #endif /* __UHC_TARGET_BC__ */ #endif /* __UHC_BUILDS_O__ */ diff --git a/EHC/src/ehc/Ty/Trf/Canonic.cag b/EHC/src/ehc/Ty/Trf/Canonic.cag index b0609ffbc..13f84abda 100644 --- a/EHC/src/ehc/Ty/Trf/Canonic.cag +++ b/EHC/src/ehc/Ty/Trf/Canonic.cag @@ -31,8 +31,8 @@ recursive canonicalization of inner components, type level beta reduction and canonicalization alternately done. A VarMp (substitution) with additional changes in the type is threaded. -Currently (20090821) only empty implicits (Impls_Tail) are replaced by -Impls_Nil, and removed in the type itself. +Currently (20090821) only empty implicits \verb@Impls_Tail@ are replaced by +\verb@Impls_Nil@, and removed in the type itself. %%] %%[(9 hmtyinfer) hs module {%{EH}Ty.Trf.Canonic} import({%{EH}Base.Common},{%{EH}Base.Builtin},{%{EH}Ty},{%{EH}VarMp},{%{EH}Substitutable},{%{EH}Ty.FitsInCommon2}) diff --git a/EHC/src/rts/C/prim.cc b/EHC/src/rts/C/prim.cc index 7172edd81..22e6b6022 100644 --- a/EHC/src/rts/C/prim.cc +++ b/EHC/src/rts/C/prim.cc @@ -55,17 +55,6 @@ PRIM Word primError(Word s) return 0; } - -PRIM Word primMinInt() -{ - return 0x10000000; -} -PRIM Word primMaxInt() -{ - return 0x0FFFFFFF; -} - - %%] diff --git a/EHC/src/rts/HsFFI.ch b/EHC/src/rts/HsFFI.ch new file mode 100644 index 000000000..d49375d70 --- /dev/null +++ b/EHC/src/rts/HsFFI.ch @@ -0,0 +1,162 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% FFI: C level interface to types used by FFI +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[8 +#ifndef __HSFFI_H__ +#define __HSFFI_H__ +%%] + +%%[99 +#ifdef __cplusplus +extern "C" { +#endif +%%] + +%%[8 +#include +#include +%%] + +%%[97 +#include +#include +%%] + +%%[8 +#include "config.h" +#include "base/sizes.h" +#include "base/basictypes.h" +#include "base/bits.h" +#ifdef __UHC_TARGET_BC__ +#include "bc/base.h" +#include "bc/prim-bool.h" +#endif +%%] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Types +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[99 +typedef Word HsChar; +typedef Int HsInt; +typedef Int8 HsInt8; +typedef Int16 HsInt16; +typedef Int32 HsInt32; +typedef Int64 HsInt64; +typedef Word HsWord; +typedef Word8 HsWord8; +typedef Word16 HsWord16; +typedef Word32 HsWord32; +typedef Word64 HsWord64; +typedef Float HsFloat; +typedef Double HsDouble; +typedef Word HsBool; +%%] + +TBD: These are not yet sorted out properly + +%%[99 +typedef void* HsPtr; /* this should better match StgAddr */ +typedef void (*HsFunPtr)(void); /* this should better match StgAddr */ +typedef void* HsForeignPtr; /* ... and this StgForeignPtr */ +typedef void* HsStablePtr; +typedef void* HsAddr; /* DEPRECATED */ +typedef void* HsForeignObj; /* DEPRECATED */ +%%] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Min & max values +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[99 +/* this should correspond to the type of StgChar in StgTypes.h */ +#define HS_CHAR_MIN 0 +#define HS_CHAR_MAX Int8_MaxValue + +#ifdef __UHC_TARGET_BC__ +# define HS_BOOL_FALSE gb_False +# define HS_BOOL_TRUE gb_True +#else +# define HS_BOOL_FALSE 0 +# define HS_BOOL_TRUE 1 +#endif + +#define HS_BOOL_MIN HS_BOOL_FALSE +#define HS_BOOL_MAX HS_BOOL_TRUE + +#define HS_INT_MIN Int_MinValue +#define HS_INT_MAX Int_MaxValue +#define HS_WORD_MIN Word_MinValue +#define HS_WORD_MAX Word_MaxValue + +#define HS_INT8_MIN Int8_MinValue +#define HS_INT8_MAX Int8_MaxValue +#define HS_INT16_MIN Int16_MinValue +#define HS_INT16_MAX Int16_MaxValue +#define HS_INT32_MIN Int32_MinValue +#define HS_INT32_MAX Int32_MaxValue +#define HS_INT64_MIN Int64_MinValue +#define HS_INT64_MAX Int64_MaxValue +#define HS_WORD8_MAX Word8_MaxValue +#define HS_WORD16_MAX Word16_MaxValue +#define HS_WORD32_MAX Word32_MaxValue +#define HS_WORD64_MAX Word64_MaxValue + +#define HS_FLOAT_RADIX FLT_RADIX +#define HS_FLOAT_ROUNDS FLT_ROUNDS +#define HS_FLOAT_EPSILON FLT_EPSILON +#define HS_FLOAT_DIG FLT_DIG +#define HS_FLOAT_MANT_DIG FLT_MANT_DIG +#define HS_FLOAT_MIN FLT_MIN +#define HS_FLOAT_MIN_EXP FLT_MIN_EXP +#define HS_FLOAT_MIN_10_EXP FLT_MIN_10_EXP +#define HS_FLOAT_MAX FLT_MAX +#define HS_FLOAT_MAX_EXP FLT_MAX_EXP +#define HS_FLOAT_MAX_10_EXP FLT_MAX_10_EXP + +#define HS_DOUBLE_RADIX DBL_RADIX +#define HS_DOUBLE_ROUNDS DBL_ROUNDS +#define HS_DOUBLE_EPSILON DBL_EPSILON +#define HS_DOUBLE_DIG DBL_DIG +#define HS_DOUBLE_MANT_DIG DBL_MANT_DIG +#define HS_DOUBLE_MIN DBL_MIN +#define HS_DOUBLE_MIN_EXP DBL_MIN_EXP +#define HS_DOUBLE_MIN_10_EXP DBL_MIN_10_EXP +#define HS_DOUBLE_MAX DBL_MAX +#define HS_DOUBLE_MAX_EXP DBL_MAX_EXP +#define HS_DOUBLE_MAX_10_EXP DBL_MAX_10_EXP +%%] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Interfaces +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Not yet supported + +%%[99 +%%] +extern void hs_init (int *argc, char **argv[]); +extern void hs_exit (void); +extern void hs_set_argv (int argc, char *argv[]); +extern void hs_add_root (void (*init_root)(void)); + +extern void hs_perform_gc (void); + +extern void hs_free_stable_ptr (HsStablePtr sp); +extern void hs_free_fun_ptr (HsFunPtr fp); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% EOF +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[99 +#ifdef __cplusplus +} +#endif +%%] + +%%[8 +#endif /* __HSFFI_H__ */ +%%] diff --git a/EHC/src/rts/base/sizes.ch b/EHC/src/rts/base/sizes.ch index bbbe8d1e2..d8a9e894d 100644 --- a/EHC/src/rts/base/sizes.ch +++ b/EHC/src/rts/base/sizes.ch @@ -65,6 +65,36 @@ #define Word8_MaxValue UINT8_MAX %%] +%%[8 +#ifdef __UHC_TARGET_BC__ + +# define Int_MinValue (Bits_MinSInt(Word,Word_SizeInBits,Word_SizeInBits-GB_Word_SizeOfWordTag)+1) +# define Int_MaxValue (Bits_MaxSInt(Word,Word_SizeInBits,Word_SizeInBits-GB_Word_SizeOfWordTag)) +# if USE_64_BITS +# define Word_MinValue Word64_MinValue +# define Word_MaxValue (Word64_MaxValue >> GB_Word_SizeOfWordTag) +# else +# define Word_MinValue Word32_MinValue +# define Word_MaxValue (Word32_MaxValue >> GB_Word_SizeOfWordTag) +# endif + +#else + +# if USE_64_BITS +# define Int_MinValue Int64_MinValue +# define Int_MaxValue Int64_MaxValue +# define Word_MinValue Word64_MinValue +# define Word_MaxValue Word64_MaxValue +# else +# define Int_MinValue Int32_MinValue +# define Int_MaxValue Int32_MaxValue +# define Word_MinValue Word32_MinValue +# define Word_MaxValue Word32_MaxValue +# endif + +#endif +%%] + %%[8 #define Byte_SizeInBits 8 #define Byte_SizeInBits_Log 3 diff --git a/EHC/src/rts/bc/base.ch b/EHC/src/rts/bc/base.ch new file mode 100644 index 000000000..270d78a93 --- /dev/null +++ b/EHC/src/rts/bc/base.ch @@ -0,0 +1,32 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Basics for bc interpreter +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[8 +#ifndef __BC_BASE_H__ +#define __BC_BASE_H__ +%%] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Configuration +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Nr of bits used for tagging a word. + +%%[8 +#define GB_Word_SizeOfWordTag 2 +%%] + +Construct a Enum Node from a tag + +%%[8 +#define GB_MkConEnumNodeAsTag(tg) (tg) +%%] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% EOF +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[8 +#endif /* __BC_BASE_H__ */ +%%] diff --git a/EHC/src/rts/bc/prim-bool.cc b/EHC/src/rts/bc/prim-bool.cc new file mode 100644 index 000000000..b1ccbfe0c --- /dev/null +++ b/EHC/src/rts/bc/prim-bool.cc @@ -0,0 +1,19 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Primitives for boolean +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[8 +#include "../HsFFI.h" +%%] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Constants +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[8 +PRIM Word gb_False + = GB_MkConEnumNodeAsTag( 0 ) ; +PRIM Word gb_True + = GB_MkConEnumNodeAsTag( 1 ) ; + +%%] diff --git a/EHC/src/rts/bc/prim.cc b/EHC/src/rts/bc/prim.cc index b65c11900..5f7097283 100644 --- a/EHC/src/rts/bc/prim.cc +++ b/EHC/src/rts/bc/prim.cc @@ -24,11 +24,6 @@ PRIM Word gb_Unit = GB_MkConEnumNodeAsTag( 0 ) ; -PRIM Word gb_False - = GB_MkConEnumNodeAsTag( 0 ) ; -PRIM Word gb_True - = GB_MkConEnumNodeAsTag( 1 ) ; - #if ! USE_EHC_MM GB_Node gb_Nil_Node = GB_MkConEnumNode( GB_Tag_List_Nil ) ; @@ -231,35 +226,6 @@ PRIM GB_NodePtr primDivModInt( GB_Int x, GB_Int y ) %%] -%%[95 -PRIM Word primMaxInt() -{ - // return GB_Int2GBInt(Bits_MaxSInt(Word,Word_SizeInBits,GB_Word_SizeInBits-GB_Word_SizeOfWordTag)) ; - return (Bits_MaxSInt(Word,Word_SizeInBits,GB_Word_SizeInBits-GB_Word_SizeOfWordTag)) ; -} - -PRIM Word primMinInt() -{ - // return GB_Int2GBInt(Bits_MinSInt(Word,Word_SizeInBits,GB_Word_SizeInBits-GB_Word_SizeOfWordTag)+1) ; - return (Bits_MinSInt(Word,Word_SizeInBits,GB_Word_SizeInBits-GB_Word_SizeOfWordTag)+1) ; -} -%%] - -%%[97 -PRIM Word primMaxWord() -{ - // printf( "primMaxWord %x\n", Word32_MaxValue >> GB_Word_SizeOfWordTag ) ; - return Word32_MaxValue >> GB_Word_SizeOfWordTag ; -} - -PRIM Word primMinWord() -{ - return Word32_MinValue ; -} -%%] - - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% bitwise logical operators %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/EHC/src/rts/bc/types.ch b/EHC/src/rts/bc/types.ch index 9f4d4bed0..47846a055 100644 --- a/EHC/src/rts/bc/types.ch +++ b/EHC/src/rts/bc/types.ch @@ -21,8 +21,6 @@ typedef Word GB_Word ; typedef SWord GB_SWord ; -#define GB_Word_SizeInBits Word_SizeInBits - typedef GB_Word* GB_WordPtr ; typedef GB_WordPtr GB_Ptr ; typedef GB_Ptr* GB_PtrPtr ; @@ -86,7 +84,6 @@ typedef union GB_WordEquiv { %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%[8 -#define GB_Word_SizeOfWordTag 2 #define GB_Word_TagMask Bits_Size2LoMask(GB_Word,GB_Word_SizeOfWordTag) #define GB_Word_IntMask (~ GB_Word_TagMask) #define GB_Word_TagPtr 0 @@ -322,7 +319,6 @@ static inline Bool gb_NH_HasTraceableFields( GB_NodeHeader h ) { #if ! USE_EHC_MM # define GB_MkConEnumNode(tg) { GB_MkConHeader(0,tg) } #endif -#define GB_MkConEnumNodeAsTag(tg) (tg /* GB_Int2GBInt(tg) */) #define GB_FillNodeFlds1(n,x1) { (n)->content.fields[0] = Cast(GB_Word,x1);} #define GB_FillNodeFlds2(n,x1,x2) {GB_FillNodeFlds1(n,x1 );(n)->content.fields[1] = Cast(GB_Word,x2);} diff --git a/EHC/src/rts/config.ch.in b/EHC/src/rts/config.ch.in index b232e6451..ef19f150a 100644 --- a/EHC/src/rts/config.ch.in +++ b/EHC/src/rts/config.ch.in @@ -43,6 +43,17 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Misc +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[8 +// the empty PRIM define is used to mark exported functions from prim.c, used to automatically generate prim.h +#define PRIM +%%] + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/EHC/src/rts/files.mk b/EHC/src/rts/files.mk index 9cdce256f..4233abc47 100644 --- a/EHC/src/rts/files.mk +++ b/EHC/src/rts/files.mk @@ -88,6 +88,7 @@ RTS_SRC_CH_SHARED := \ timing \ priminline \ primdecl \ + HsFFI \ base/sizes \ base/bits \ base/panic \ @@ -135,6 +136,7 @@ RTS_SRC_CH_SHARED := \ RTS_SRC_CH_BYTECODE := \ $(patsubst %,$(RTS_SRC_PREFIX)%.ch,\ + bc/base \ bc/types \ bc/registers \ bc/interpreter \ @@ -161,6 +163,7 @@ PRM_SRC_CC_SHARED := \ PRM_SRC_CC_BYTECODE := \ $(patsubst %,$(RTS_SRC_PREFIX)%.cc,\ bc/prim \ + bc/prim-bool \ bc/prim-handle \ bc/prim-array \ bc/prim-thread \ diff --git a/EHC/src/rts/prim-shared.cc b/EHC/src/rts/prim-shared.cc index 6399ee955..7b2652e88 100644 --- a/EHC/src/rts/prim-shared.cc +++ b/EHC/src/rts/prim-shared.cc @@ -355,3 +355,32 @@ PRIM Word primEqStableAddr( Word x, Word y ) // #endif %%] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Min/Max for Int, Word +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%[95 +PRIM Word primMaxInt() +{ + return Int_MaxValue ; +} + +PRIM Word primMinInt() +{ + return Int_MinValue ; +} +%%] + +%%[97 +PRIM Word primMaxWord() +{ + // printf( "primMaxWord %x\n", Word32_MaxValue >> GB_Word_SizeOfWordTag ) ; + return Word_MaxValue ; +} + +PRIM Word primMinWord() +{ + return Word_MinValue ; +} +%%] + diff --git a/EHC/src/rts/rts.ch b/EHC/src/rts/rts.ch index 8008e8362..4981b2041 100644 --- a/EHC/src/rts/rts.ch +++ b/EHC/src/rts/rts.ch @@ -58,9 +58,6 @@ #endif -// the empty PRIM define is used to mark exported functions from prim.c, used to automatically generate prim.h -#define PRIM - %%] diff --git a/EHC/src/rts/rtsbase.ch b/EHC/src/rts/rtsbase.ch index 5d01fdc82..d51efed1e 100644 --- a/EHC/src/rts/rtsbase.ch +++ b/EHC/src/rts/rtsbase.ch @@ -12,8 +12,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%[8 -#include "config.h" +#include "HsFFI.h" %%] +#include "config.h" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Internal config, must proceed includes @@ -74,22 +75,20 @@ #include #include #include -#include -#include -#include "base/sizes.h" -#include "base/basictypes.h" +// #include +// #include +// #include "base/sizes.h" +// #include "base/basictypes.h" +// #include "base/bits.h" #if __UHC_TARGET_BC__ #include "bc/registers.h" #endif -#include "base/bits.h" #include "base/sysalloc.h" #include "base/panic.h" #include "mm/mmitf.h" #include "base/utils.h" %%[[97 -#include -#include #ifndef FP_ZERO #warning FP_ZERO not defined (assuming value 2). Using floating point numbers may give problems. #define FP_ZERO 2 diff --git a/EHC/text/InternalDocEhcTechnical.cltex b/EHC/text/InternalDocEhcTechnical.cltex index 59ea13df7..48290c75f 100644 --- a/EHC/text/InternalDocEhcTechnical.cltex +++ b/EHC/text/InternalDocEhcTechnical.cltex @@ -36,8 +36,8 @@ The following transformations are performed on each separate module: \item ElimTrivApp (again): -\item FullLazy: -%%@EHCoreTrfFullLazy.doesWhat +\item ANormal: +%%@EHCoreTrfANormal.doesWhat \item LamGlobalAsArg: