X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Finterpreter%2Fconnect.h;h=ff99e1ef6eafb64e23a09899490b8ed9cb9813b2;hb=546d5831f6a6ac1c77607b8d9d322b987729b590;hp=28e7be0f58586c80427f8737d990bce09be520a1;hpb=dee93f806b1c63bf99fb25d6e3eb68048f1daca2;p=ghc-hetmet.git diff --git a/ghc/interpreter/connect.h b/ghc/interpreter/connect.h index 28e7be0..ff99e1e 100644 --- a/ghc/interpreter/connect.h +++ b/ghc/interpreter/connect.h @@ -8,8 +8,8 @@ * included in the distribution. * * $RCSfile: connect.h,v $ - * $Revision: 1.10 $ - * $Date: 1999/10/15 23:52:00 $ + * $Revision: 1.22 $ + * $Date: 1999/12/20 16:55:26 $ * ------------------------------------------------------------------------*/ /* -------------------------------------------------------------------------- @@ -17,6 +17,7 @@ * ------------------------------------------------------------------------*/ extern Bool haskell98; /* TRUE => Haskell 98 compatibility*/ +extern Bool combined; /* TRUE => combined operation */ extern Module modulePrelude; /* -------------------------------------------------------------------------- @@ -58,11 +59,6 @@ extern Name nameRange; extern Name nameLe, nameGt; extern Name nameShowsPrec, nameReadsPrec; extern Name nameMult, namePlus; -extern Name nameConCmp, nameEnRange; -extern Name nameEnIndex, nameEnInRng; -extern Name nameEnToEn, nameEnFrEn; -extern Name nameEnFrom, nameEnFrTh; -extern Name nameEnFrTo; extern Name nameComp, nameApp; /* composition and append */ extern Name nameShowField; /* display single field */ extern Name nameShowParen; /* wrap with parens */ @@ -78,6 +74,9 @@ extern Name namePrint; /* printing primitive */ extern Name nameCreateAdjThunk; /* f-x-dyn: create adjustor thunk */ extern Text textPrelude; extern Text textNum; /* used to process default decls */ +extern Text textCcall; /* used to process foreign import */ +extern Text textStdcall; /* ... and foreign export */ + #if NPLUSK extern Text textPlus; /* Used to recognise n+k patterns */ #endif @@ -102,6 +101,7 @@ extern String hugsEdit; /* String for editor command */ extern String hugsPath; /* String for file search path */ extern String projectPath; /* String for project search path */ +extern Type typeProgIO; /* For the IO monad, IO a */ extern Type typeArrow; /* Builtin type constructors */ extern Type typeList; extern Type typeUnit; @@ -141,6 +141,7 @@ extern List defaultDefns; /* default definitions (if any) */ extern Int defaultLine; /* line in which default defs occur*/ extern List evalDefaults; /* defaults for evaluator */ extern Cell inputExpr; /* evaluator input expression */ +extern Cell inputContext; /* evaluator input expression */ extern Addr inputCode; /* Code for compiled input expr */ extern Int whnfArgs; /* number of args of term in whnf */ @@ -155,7 +156,7 @@ extern Bool preludeLoaded; /* TRUE => prelude has been loaded */ extern Bool gcMessages; /* TRUE => print GC messages */ extern Bool literateScripts; /* TRUE => default lit scripts */ extern Bool literateErrors; /* TRUE => report errs in lit scrs */ -extern Bool optimise; /* TRUE => simplify STG */ +extern Bool showInstRes; /* TRUE => show instance resolution */ extern Int cutoff; /* Constraint Cutoff depth */ @@ -166,6 +167,7 @@ extern String preprocessor; /* preprocessor command */ #if DEBUG_CODE extern Bool debugCode; /* TRUE => print G-code to screen */ #endif +extern Bool debugSC; /* TRUE => print SC to screen */ extern Bool kindExpert; /* TRUE => display kind errors in */ /* full detail */ extern Bool allowOverlap; /* TRUE => allow overlapping insts */ @@ -176,12 +178,19 @@ extern Bool allowOverlap; /* TRUE => allow overlapping insts */ extern Void everybody Args((Int)); -#define RESET 1 /* reset subsystem */ -#define MARK 2 /* mark parts of graph in use by subsystem */ -#define INSTALL 3 /* install subsystem (executed once only) */ -#define EXIT 4 /* Take action immediately before exit() */ -#define BREAK 5 /* Take action after program break */ -#define GCDONE 6 /* Restore subsystem invariantss after GC */ + +#define RESET 1 /* reset subsystem */ +#define MARK 2 /* mark parts of graph in use by subsystem */ +#define PREPREL 3 /* do startup actions before Prelude loading */ +#define POSTPREL 4 /* do startup actions after Prelude loading */ +#define EXIT 5 /* Take action immediately before exit() */ +#define BREAK 6 /* Take action after program break */ +#define GCDONE 7 /* Restore subsystem invariantss after GC */ + +/* PREPREL was formerly called INSTALL. POSTPREL doesn't have an analogy + in the old Hugs. +*/ + typedef long Target; extern Void setGoal Args((String, Target)); @@ -198,7 +207,9 @@ extern Void projInput Args((String)); extern Void stringInput Args((String)); extern Void parseScript Args((String,Long)); extern Void parseExp Args((Void)); +#if EXPLAIN_INSTANCE_RESOLUTION extern Void parseContext Args((Void)); +#endif extern String readFilename Args((Void)); extern String readLine Args((Void)); extern Syntax defaultSyntax Args((Text)); @@ -222,16 +233,24 @@ extern Void clearTypeIns Args((Void)); extern Type fullExpand Args((Type)); extern Bool isAmbiguous Args((Type)); extern Void ambigError Args((Int,String,Cell,Type)); -extern Void classDefn Args((Int,Cell,Cell)); +extern Void classDefn Args((Int,Cell,List,List)); extern Void instDefn Args((Int,Cell,Cell)); extern Void addTupInst Args((Class,Int)); #if TREX extern Inst addRecShowInst Args((Class,Ext)); extern Inst addRecEqInst Args((Class,Ext)); #endif +extern List typeVarsIn Args((Cell,List,List,List)); +extern List oclose Args((List,List)); +extern List zonkTyvarsIn Args((Type,List)); +extern Type zonkTyvar Args((Int)); +extern Type zonkType Args((Type,Int)); extern Void primDefn Args((Cell,List,Cell)); extern Void defaultDefn Args((Int,List)); extern Void checkExp Args((Void)); +#if EXPLAIN_INSTANCE_RESOLUTION +extern Void checkContext Args((Void)); +#endif extern Void checkDefns Args((Void)); extern Bool h98Pred Args((Bool,Cell)); extern Cell h98Context Args((Bool,List)); @@ -289,6 +308,14 @@ extern Void gcScanning Args((Void)); extern Void gcRecovered Args((Int)); extern Void gcCStack Args((Void)); extern Void needPrims Args((Int)); +extern List calcFunDepsPreds Args((List)); +extern Inst findInstFor Args((Cell,Int)); +#if MULTI_INST +extern List findInstsFor Args((Cell,Int)); +#endif + +extern Void ppScripts ( Void ); +extern Void ppModules ( Void ); extern Type primType( Int /*AsmMonad*/ monad, String a_kinds, String r_kinds ); #define aVar mkOffset(0) /* Simple skeleton for type var */ @@ -315,8 +342,26 @@ extern Bool broken; /* indicates interrupt received */ # define ctrlbrk(bh) # define allowBreak() kbhit() #else /* !HUGS_FOR_WINDOWS */ -# define ctrlbrk(bh) signal(SIGINT,bh); signal(SIGBREAK,bh) -# define allowBreak() if (broken) { broken=FALSE; sigRaise(breakHandler); } +# if HAVE_SIGPROCMASK +# include +# define ctrlbrk(bh) { sigset_t mask; \ + signal(SIGINT,bh); \ + sigemptyset(&mask); \ + sigaddset(&mask, SIGINT); \ + sigprocmask(SIG_UNBLOCK, &mask, NULL); \ + } +# else +# define ctrlbrk(bh) signal(SIGINT,bh) +# endif +#if SYMANTEC_C +extern int time_release; +extern int allow_break_count; +# define allowBreak() if (time_release !=0 && \ + (++allow_break_count % time_release) == 0) \ + ProcessEvent(); +#else +# define allowBreak() if (broken) { broken=FALSE; sigRaise(breakHandler); } +#endif #endif /* !HUGS_FOR_WINDOWS */ /*--------------------------------------------------------------------------- @@ -336,6 +381,9 @@ Int readRegInt Args((String var, Int def)); Bool writeRegInt Args((String var, Int val)); #endif +#define N_INSTALLDIR 200 +extern char installDir[N_INSTALLDIR]; + /*--------------------------------------------------------------------------- * File operations: *-------------------------------------------------------------------------*/ @@ -444,10 +492,10 @@ extern Type typeException; extern Type typeIO; extern Type typeST; -extern Void foreignImport Args((Cell,Pair,Cell,Cell)); +extern Void foreignImport Args((Cell,Text,Pair,Cell,Cell)); extern List foreignImports; /* foreign import declarations */ extern Void implementForeignImport Args((Name)); -extern Void foreignExport Args((Cell,Cell,Cell,Cell)); +extern Void foreignExport Args((Cell,Text,Cell,Cell,Cell)); extern List foreignExports; /* foreign export declarations */ extern Void implementForeignExport Args((Name)); @@ -496,40 +544,27 @@ extern Int outColumn; /* current output column number */ extern Void unlexStrConst Args((Text)); extern Void unlexVar Args((Text)); +extern Void unlexVarStr Args((String)); extern List offsetTyvarsIn Args((Type,List)); -extern Void optimiseTopBinds Args((List)); extern List cfunSfuns; /* List of (Cfun,[SelectorVar]) */ extern Void interface Args((Int)); -extern List typeVarsIn Args((Cell,List,List)); - extern Void getFileSize Args((String, Long *)); -extern Void loadInterface Args((String,Long)); +extern ZPair readInterface Args((String,Long)); +extern Void processInterfaces Args((Void)); -extern Void openGHCIface Args((Text)); -extern Void loadSharedLib Args((String)); -extern Void addGHCImports Args((Int,Text,List)); -extern Void addGHCExports Args((Cell,List)); -extern Void addGHCVar Args((Int,Text,Type)); -extern Void addGHCSynonym Args((Int,Cell,List,Type)); -extern Void addGHCDataDecl Args((Int,List,Cell,List,List)); -extern Void addGHCNewType Args((Int,List,Cell,List,Cell)); -extern Void addGHCClass Args((Int,List,Cell,List,List)); -extern Void addGHCInstance Args((Int,List,Pair,Text)); -extern Void finishInterfaces Args((Void)); +extern List /* of ZTriple(I_INTERFACE, + Text--name of obj file, + Int--size of obj file) */ + ifaces_outstanding; -extern Void hi_o_namesFromSrcName Args((String,String*,String* oName)); -extern Void parseInterface Args((String,Long)); +extern Void hi_o_namesFromSrcName Args((String,String*,String* oName)); +extern Cell parseInterface Args((String,Long)); -#define SMALL_INLINE_SIZE 9 - - -// nasty hack, but seems an easy to convey the object name -// and size to openGHCIface -char nameObj[FILENAME_MAX+1]; -int sizeObj; - +extern String getExtraObjectInfo ( String primaryObjectName, + String extraFileName, + Int* extraFileSize );