hat 2.9.1 → 2.9.2
raw patch · 7 files changed
+125/−100 lines, 7 filesdep ~directoryPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: directory
API changes (from Hackage documentation)
Files
- hat.cabal +3/−3
- tools/artutils.c +42/−32
- tools/finitemap.c +2/−2
- tools/finitemap.h +1/−1
- tools/hat-check.c +31/−16
- tools/hat-names.c +17/−17
- tools/observeutils.c +29/−29
hat.cabal view
@@ -1,6 +1,6 @@ name: hat-version: 2.9.1+version: 2.9.2 synopsis: The Haskell tracer, generating and viewing Haskell execution traces description: hat-trans transforms Module.hs into Hat/Module.hs such that when the program is@@ -17,7 +17,7 @@ Although it should build on any operating system, most viewing tools use ASCII console escape sequences and they open xterms; hence they will only work well under Unix and X11.- Tested on MacOS X 10.9.5.+ Tested on MacOS X 10.11.6. Installation: @@ -189,7 +189,7 @@ main-is: HatNonTerm.hs hs-source-dirs: tools other-modules: LowLevel, SExp, PrettyLibHighlight, HighlightStyle, Run, NonTermLib, CommonUI, Ident, SrcRef- build-depends: base >=4.9, process >=1.1+ build-depends: base >=4.9, process >=1.1, directory >= 1.0 extensions: ForeignFunctionInterface includes: art.h, ntohl.h include-dirs: include
tools/artutils.c view
@@ -88,6 +88,16 @@ return buf.st_size; } +/* myfread() is just like fread(), except if it fails reading everything, it+ * aborts with an error message.+ */+void myfread(void* buf, int siz, int num, FILE* stream)+{+ if (fread(buf,siz,num,stream) != num) {+ fprintf(stderr, "fread failed.\n");+ exit(1);+ }+} /* freadAt() is just like fread(), except it seeks to a specific * file location first. (Random Access)@@ -140,7 +150,7 @@ readFO (void) { FileOffset fo;- fread(&fo,sizeof(FileOffset),1,HatFileRandom);+ myfread(&fo,sizeof(FileOffset),1,HatFileRandom); HIDE(fprintf(stderr,"readFO -> 0x%x\n",ntohl(fo));) return ntohl(fo); }@@ -282,10 +292,10 @@ case AtomConstructor: id = (Ident*)malloc(sizeof(Ident)); modpos = readFO();- fread(&defnpos,sizeof(int),1,HatFileRandom);- fread(&defnposend,sizeof(int),1,HatFileRandom);- fread(&(id->fixity),sizeof(char),1,HatFileRandom);- fread(&(id->arity),sizeof(char),1,HatFileRandom);+ myfread(&defnpos,sizeof(int),1,HatFileRandom);+ myfread(&defnposend,sizeof(int),1,HatFileRandom);+ myfread(&(id->fixity),sizeof(char),1,HatFileRandom);+ myfread(&(id->arity),sizeof(char),1,HatFileRandom); id->idname = readString(); id->defnline = ntohl(defnpos)/10000; id->defncolumn = ntohl(defnpos)%10000;@@ -353,9 +363,9 @@ } sr = (SrcRef*)malloc(sizeof(SrcRef)); modpos = readFO();- fread(&usepos,sizeof(int),1,HatFileRandom);+ myfread(&usepos,sizeof(int),1,HatFileRandom); usepos = ntohl(usepos);- fread(&useposend,sizeof(int),1,HatFileRandom);+ myfread(&useposend,sizeof(int),1,HatFileRandom); useposend = ntohl(useposend); readModuleAt(modpos, &modname, &(sr->srcname), &dummy); sr->line = usepos/10000;@@ -415,7 +425,7 @@ parent = readFO(); switch (lower5(c)) { case ExpChar:- { fread(&c,sizeof(char),1,HatFileRandom);+ { myfread(&c,sizeof(char),1,HatFileRandom); if ((c>31) && (c!='\'')) sprintf(buf,"'%c'",c); else switch(c) {@@ -428,7 +438,7 @@ } break; case ExpInt: { int i;- fread(&i,sizeof(int),1,HatFileRandom);+ myfread(&i,sizeof(int),1,HatFileRandom); sprintf(buf,"%d",ntohl(i)); id->idname = strdup(buf); } break;@@ -437,8 +447,8 @@ } break; case ExpRat: { int i,j;- fread(&i,sizeof(int),1,HatFileRandom);- fread(&j,sizeof(int),1,HatFileRandom);+ myfread(&i,sizeof(int),1,HatFileRandom);+ myfread(&j,sizeof(int),1,HatFileRandom); sprintf(buf,"%d%%%d",ntohl(i),ntohl(j)); id->idname = strdup(buf); } break;@@ -448,13 +458,13 @@ } break; case ExpFloat: { float f;- fread(&f,sizeof(float),1,HatFileRandom);+ myfread(&f,sizeof(float),1,HatFileRandom); sprintf(buf,"%.6f",f); id->idname = strdup(buf); } break; case ExpDouble: { double d;- fread(&d,sizeof(double),1,HatFileRandom);+ myfread(&d,sizeof(double),1,HatFileRandom); sprintf(buf,"%.15f",d); id->idname = strdup(buf); } break;@@ -662,7 +672,7 @@ HIDE(fprintf(stderr,"enter parent of 0x%x -> 0x%x\n",fo,parent);) readFO(); /* skip result */ foExprs[0] = readFO(); /* get fun */- fread(&arity,sizeof(unsigned char),1,HatFileRandom);+ myfread(&arity,sizeof(unsigned char),1,HatFileRandom); for (i=1; i<=arity; i++) { foExprs[i] = readFO(); }@@ -705,7 +715,7 @@ parent = readFO(); /* get parent */ HIDE(fprintf(stderr,"enter parent of 0x%x -> 0x%x\n",fo,parent);) foExprs[0] = readFO(); /* get fun */- fread(&arity,sizeof(unsigned char),1,HatFileRandom);+ myfread(&arity,sizeof(unsigned char),1,HatFileRandom); for (i=1; i<=arity; i++) { foExprs[i] = readFO(); }@@ -1203,23 +1213,23 @@ readFO(); /* skip parent */ readFO(); /* skip result */ readFO(); /* skip fun/constructor */- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ return (int)(c); break; case ExpValueApp: if (hasSrcPos(c)) { readFO(); } /* skip usage position */ readFO(); /* skip parent */ readFO(); /* skip constructor */- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ return (int)c; break; case AtomConstructor: /* only interested in fields */ if (!hasFields(c)) { return 0; } readFO(); /* skip module */- { int x; fread(&x,sizeof(int),1,HatFileRandom); }- { int x; fread(&x,sizeof(int),1,HatFileRandom); }- { char x; fread(&x,sizeof(char),1,HatFileRandom); }- { char arity; fread(&arity,sizeof(char),1,HatFileRandom);+ { int x; myfread(&x,sizeof(int),1,HatFileRandom); }+ { int x; myfread(&x,sizeof(int),1,HatFileRandom); }+ { char x; myfread(&x,sizeof(char),1,HatFileRandom); }+ { char arity; myfread(&arity,sizeof(char),1,HatFileRandom); return (int)arity; } break; case Module:@@ -1273,7 +1283,7 @@ readFO(); /* skip result */ ptr = readFO(); /* fun/constructor */ if (n==0) return getResult(ptr,True);- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ if (n<=c) { for (i=1; i<n; i++) readFO(); /* skip other args */ ptr = readFO(); /* get n'th arg */@@ -1286,7 +1296,7 @@ readFO(); /* skip parent */ ptr = readFO(); /* fun/constructor */ if (n==0) return ptr; /* no result-chain - fun is already an atom */- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ if (n<=c) { for (i=1; i<n; i++) readFO(); /* skip other args */ ptr = readFO(); /* get n'th arg */@@ -1322,7 +1332,7 @@ readFO(); /* skip result */ ptr = readFO(); /* exp/constructor */ if (n==0) return getResult(ptr,True);- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ if (n<=c) { for (i=0; i<c; i++) readFO(); /* skip binder labels */ for (i=1; i<n; i++) readFO(); /* skip other bindees */@@ -1380,7 +1390,7 @@ readFO(); /* skip result */ ptr = readFO(); /* fun/constructor */ if (n==0) return ptr;- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ assert (n<=c); for (i=1; i<n; i++) readFO(); /* skip other args */ ptr = readFO(); /* get n'th arg */@@ -1391,7 +1401,7 @@ readFO(); /* skip parent */ ptr = readFO(); /* fun/constructor */ if (n==0) return ptr;- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ assert (n<=c); for (i=1; i<n; i++) readFO(); /* skip other args */ ptr = readFO(); /* get n'th arg */@@ -1425,7 +1435,7 @@ readFO(); /* skip result */ ptr = readFO(); /* exp/constructor */ if (n==0) return ptr;- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ assert (n<=c); for (i=0; i<c; i++) readFO(); /* skip binder labels */ for (i=1; i<n; i++) readFO(); /* skip other bindees */@@ -1490,7 +1500,7 @@ readFO(); /* skip parent */ readFO(); /* skip result */ readFO(); /* skip exp/constructor */- fread(&c,sizeof(char),1,HatFileRandom); /* get arity */+ myfread(&c,sizeof(char),1,HatFileRandom); /* get arity */ if (n<=c) { for (i=1; i<n; i++) readFO(); /* skip other labels */ ptr = readFO(); /* get n'th label */@@ -1507,10 +1517,10 @@ case AtomConstructor: if (hasFields(c)) { readFO(); /* skip module ptr */- { int x; fread(&x,sizeof(int),1,HatFileRandom); }- { int x; fread(&x,sizeof(int),1,HatFileRandom); }- { char x; fread(&x,sizeof(char),1,HatFileRandom); }- { char arity; fread(&arity,sizeof(char),1,HatFileRandom);+ { int x; myfread(&x,sizeof(int),1,HatFileRandom); }+ { int x; myfread(&x,sizeof(int),1,HatFileRandom); }+ { char x; myfread(&x,sizeof(char),1,HatFileRandom); }+ { char arity; myfread(&arity,sizeof(char),1,HatFileRandom); readString(); while (n--) readFO(); ptr = readFO();
tools/finitemap.c view
@@ -41,8 +41,8 @@ t->key = key; t->value = value; t->size = 1;- t->left = (cast)NULL;- t->right = (cast)NULL;+ t->left = NULL;+ t->right = NULL; return t; }
tools/finitemap.h view
@@ -7,7 +7,7 @@ /* external API */ typedef struct _FM* FiniteMap;-typedef void* cast;+typedef void* cast; typedef int (*FMComparison) (cast a, cast b); typedef int (*FMTraversal) (cast key, cast value, cast dummy); typedef void (*FMFreeItem) (cast key, cast value);
tools/hat-check.c view
@@ -486,7 +486,7 @@ sprintf(fixpribuf, " infixl %d,", b/4); break; case 3:- sprintf(fixpribuf, "");+ sprintf(fixpribuf, "%s", ""); break; } return fixpribuf;@@ -594,7 +594,8 @@ header (void) { char s[9];- fread(s,sizeof(char),8,f); s[8]='\0';+ if (fread(s,sizeof(char),8,f) != 8) {fprintf (stderr,"No header.\n"); exit(1);}+ s[8]='\0'; nextoffset = 8; if (amode) printf("%s", s); if (amode) printf("\nEntry point: ");@@ -913,7 +914,8 @@ markfromheader (uint32_t *buf) { fseek(f,8L,SEEK_SET);- fread(buf,sizeof(uint32_t),2,f);+ if (fread(buf,sizeof(uint32_t),2,f) != 2)+ { fprintf(stderr, "markfromheader: reading 2 32ints failed.\n"); exit(1);} markfrom(getpointer(buf+1),buf+1); markfrom(getpointer(buf), buf); }@@ -944,7 +946,8 @@ * If it is not marked, then mark it now. */ fseek(f,root,SEEK_SET);- fread(&tag,sizeof(char),1,f);+ if (fread(&tag,sizeof(char),1,f) != 1)+ { fprintf(stderr, "markfrom: reading character failed.\n"); exit(1);} if (ismarked(tag)) return; marktag(&tag); fseek(f,root,SEEK_SET);@@ -966,7 +969,8 @@ } switch (k) { case ListCons:- fread(buf,sizeof(uint32_t),2,f); /* two pointers */+ if (fread(buf,sizeof(uint32_t),2,f) != 2) /* two pointers */+ { fprintf(stderr, "markfrom: reading two pointers failed.\n"); exit(1);} markfrom(getpointer(buf+1),buf+1); markfrom(getpointer(buf),buf); break;@@ -976,41 +980,51 @@ case SrcPos: case AtomVariable: case AtomConstructor: /* ignore fieldnames for now */- fread(buf,sizeof(uint32_t),1,f); /* points to module mode */+ if (fread(buf,sizeof(uint32_t),1,f) != 1) /* points to module mode */+ { fprintf(stderr, "markfrom: reading a pointer failed.\n"); exit(1);} markfrom(getpointer(buf),buf); break; default: { int pos = 0; if (hasSrcPos(tag)) {- fread(buf+pos,sizeof(uint32_t),1,f);+ if (fread(buf+pos,sizeof(uint32_t),1,f) != 1)+ { fprintf(stderr, "markfrom: reading a pointer failed.\n"); exit(1);} pos++; }- fread(buf+pos,sizeof(uint32_t),1,f); /* parent pointer */+ if (fread(buf+pos,sizeof(uint32_t),1,f) != 1) /* parent pointer */+ { fprintf(stderr, "markfrom: reading parent pointer failed.\n"); exit(1);} pos++; switch (k) { case ExpApp:- fread(buf+pos,sizeof(uint32_t),2,f); /* result+fun */+ if (fread(buf+pos,sizeof(uint32_t),2,f) != 1) /* result+fun */+ { fprintf(stderr, "markfrom: reading result+fun failed.\n"); exit(1);} pos += 2; { unsigned char arity;- fread(&arity,sizeof(unsigned char),1,f);- fread(buf+pos,sizeof(uint32_t),(unsigned int)arity,f);+ if (fread(&arity,sizeof(unsigned char),1,f) != 1)+ { fprintf(stderr, "markfrom: reading character failed.\n"); exit(1);}+ if (fread(buf+pos,sizeof(uint32_t),(unsigned int)arity,f) != arity)+ { fprintf(stderr, "markfrom: reading arguments failed.\n"); exit(1);} pos += (int)arity; } break; case ExpValueApp:- fread(buf+pos,sizeof(uint32_t),1,f); /* fun */+ if (fread(buf+pos,sizeof(uint32_t),1,f) != 1) /* fun */+ { fprintf(stderr, "markfrom: reading fun failed.\n"); exit(1);} pos += 1; { unsigned char arity;- fread(&arity,sizeof(unsigned char),1,f);- fread(buf+pos,sizeof(uint32_t),(unsigned int)arity,f);+ if (fread(&arity,sizeof(unsigned char),1,f) != 1)+ { fprintf(stderr, "markfrom: reading arity failed.\n"); exit(1);}+ if (fread(buf+pos,sizeof(uint32_t),(unsigned int)arity,f) != arity)+ { fprintf(stderr, "markfrom: reading arguments failed.\n"); exit(1);} pos += (int)arity; } break; case ExpValueUse: case ExpConstUse: case ExpProjection:- fread(buf+pos,sizeof(uint32_t),1,f); /* one extra pointer */+ if (fread(buf+pos,sizeof(uint32_t),1,f) != 1) /* one extra pointer */+ { fprintf(stderr, "markfrom: reading pointer failed.\n"); exit(1);} pos++; break; case ExpHidden:@@ -1019,7 +1033,8 @@ case ExpGuard: case ExpCase: case ExpIf:- fread(buf+pos,sizeof(uint32_t),2,f); /* two pointers */+ if (fread(buf+pos,sizeof(uint32_t),2,f) != 2) /* two pointers */+ { fprintf(stderr, "markfrom: reading two pointers failed.\n"); exit(1);} pos+=2; break; default: break; /* no pointers */
tools/hat-names.c view
@@ -72,8 +72,8 @@ void map1_insert (FileOffset node, char* id, idkind k, unsigned char arity) {- item *it = (item*)0;- it = FM_lookup(map1,(cast)node);+ item *it = (item*)NULL;+ it = FM_lookup(map1,(cast)(uintptr_t)node); if (!it) { it = (item*)malloc(sizeof(item)); it->name = id;@@ -83,14 +83,14 @@ it->pending = 0; it->thunks = 0; it->thispos = node;- FM_insert(map1,(cast)node,(cast)it);+ FM_insert(map1,(cast)(uintptr_t)node,(cast)it); } } defn* map2_insert (FileOffset usage, FileOffset def, unsigned char ap) {- item *it = (item*)0;- it = FM_lookup(map1,(cast)def);+ item *it = (item*)NULL;+ it = FM_lookup(map1,(cast)(uintptr_t)def); if (it) { defn *fn; fn = (defn*)malloc(sizeof(defn));@@ -99,7 +99,7 @@ fn->next = (defn*)0; //if (strcmp(it->name,">=")==0) // fprintf(stderr,"map2: %s at 0x%x (%d)\n",it->name,usage,it->uses);- FM_insert(map2,(cast)usage,(cast)fn);+ FM_insert(map2,(cast)(uintptr_t)usage,(cast)fn); return fn; } else return (defn*)0; }@@ -333,10 +333,10 @@ fun = q_readFO(); /* keep fun ptr */ q_fread(&size,sizeof(unsigned char),1,HatFileSeq); /* get arity */ for (i=0; i<size; i++) q_readFO(); /* skip args */- def = (defn*)FM_lookup(map2,(cast)fun);+ def = (defn*)FM_lookup(map2,(cast)(uintptr_t)fun); if (def) { defn *def2;- it = FM_lookup(map1,(cast)def->atom);+ it = FM_lookup(map1,(cast)(uintptr_t)def->atom); if (it) { if (size>=def->arity) { if (result==Entered) it->pending += 1;@@ -348,7 +348,7 @@ fprintf(stderr,"unknown atom in fun at (ExpApp 0x%x)\n",node); } if (def->next) {- it = FM_lookup(map1,(cast)def->next->atom);+ it = FM_lookup(map1,(cast)(uintptr_t)def->next->atom); if (it) { if (size>=def->next->arity) { if (result==Entered) it->pending += 1;@@ -376,7 +376,7 @@ fun = q_readFO(); /* fun ptr is an Atom ref */ q_fread(&size,sizeof(unsigned char),1,HatFileSeq); /* get arity */ for (i=0; i<size; i++) q_readFO(); /* skip args */- it = FM_lookup(map1,(cast)fun);+ it = FM_lookup(map1,(cast)(uintptr_t)fun); if (it) { if (size>=it->arity) { it->uses += 1;@@ -395,7 +395,7 @@ { FileOffset atom; item *it; atom = q_readFO(); /* get atom */ if ((atom!=Lambda)&&(atom!=DoLambda)) {- it = FM_lookup(map1,(cast)atom);+ it = FM_lookup(map1,(cast)(uintptr_t)atom); if (it) { map2_insert(node,atom,0); if ((it->kind==Construct) && (it->arity==0)) it->uses+=1;@@ -407,11 +407,11 @@ q_readFO(); /* skip parent */ { FileOffset exp; defn *def; item *it; exp = q_readFO(); /* get ExpConstDef location */- def = FM_lookup(map2,(cast)exp);+ def = FM_lookup(map2,(cast)(uintptr_t)exp); if (def) { defn *def2; def2 = map2_insert(node,def->atom,0);- it = FM_lookup(map1,(cast)def->atom);+ it = FM_lookup(map1,(cast)(uintptr_t)def->atom); if (it) it->uses+=1; else fprintf(stderr ,"unknown atom in defn in (ExpConstUse 0x%x)\n",node);@@ -425,7 +425,7 @@ q_readFO(); /* skip parent */ result = q_readFO(); /* result might be significant */ atom = q_readFO(); /* get atom */- it = FM_lookup(map1,(cast)atom);+ it = FM_lookup(map1,(cast)(uintptr_t)atom); if (it) def = map2_insert(node,atom,0); else fprintf(stderr,"unknown atom in (ExpConstDef 0x%x)\n",node); countCAFResult(node,result,def,0,0);@@ -489,9 +489,9 @@ fun = readFO(); fread(&size,sizeof(unsigned char),1,HatFileRandom); /* arity */ if (fun < caf) { /* fun already seen in linear scan */- atom = (defn*)FM_lookup(map2,(cast)fun);+ atom = (defn*)FM_lookup(map2,(cast)(uintptr_t)fun); if (atom) {- it = (item*)FM_lookup(map1,(cast)atom->atom);+ it = (item*)FM_lookup(map1,(cast)(uintptr_t)atom->atom); if (it) { defn *def2; def2 = (defn*)malloc(sizeof(defn));@@ -515,7 +515,7 @@ if ((var==Lambda)||(var==DoLambda)) return; if (var < caf) { HIDE(fprintf(stderr,"countCAF: var=0x%x < caf=0x%x\n",var,caf);)- it = (item*)FM_lookup(map1,(cast)var);+ it = (item*)FM_lookup(map1,(cast)(uintptr_t)var); HIDE(if (it) fprintf(stderr,"countCAF: var=%s\n",it->name);) if (it && (arity<it->arity)) { defn *def2;
tools/observeutils.c view
@@ -36,7 +36,7 @@ info->node = atom; info->var = var; info->arity = arity;- FM_insert(mapAtom2Info,(cast)atom,(cast)info);+ FM_insert(mapAtom2Info,(cast)(uintptr_t)atom,(cast)info); } /* Insert into either mapExp2Atom or mapContext2Atom */ void@@ -44,13 +44,13 @@ ,unsigned char arity) { Info *info = (Info*)0;- info = FM_lookup(mapAtom2Info,(cast)atom);+ info = FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom); if (info) { Atom *fun; fun = (Atom*)malloc(sizeof(Atom)); fun->atom = atom; fun->arity = info->arity - arity;- FM_insert(map2,(cast)exp,(cast)fun);+ FM_insert(map2,(cast)(uintptr_t)exp,(cast)fun); } } /* free memory when no longer needed */@@ -187,9 +187,9 @@ for (i=0; i<size; i++) q_readFO(); /* skip args */ /* First check if this is a possible caller context */ if (o_context) {- atom = (Atom*)FM_lookup(mapContext2Atom,(cast)fun);+ atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)fun); if (atom) {- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); if (it && !strcmp(it->var,o_caller)) { insert_map2(mapContext2Atom,node,atom->atom,size); HIDE(fprintf(stderr,"App of %s (context) ",it->var);)@@ -197,24 +197,24 @@ } } /* Then check if we have found the right callee */- atom = (Atom*)FM_lookup(mapExp2Atom,(cast)fun);+ atom = (Atom*)FM_lookup(mapExp2Atom,(cast)(uintptr_t)fun); if (atom) {- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); if (it && !strcmp(it->var,o_callee)) { HIDE(fprintf(stderr,"App of %s (callee)",it->var);) if (size >= atom->arity) { /* is not undersaturated */ if (!o_recursive) { /* if excluding recursive calls */ insert_map2(mapContext2Atom,node,atom->atom,size);- atom = (Atom*)FM_lookup(mapContext2Atom,(cast)parent);+ atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)parent); if (atom) {- it =(Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it =(Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); if (it && !strcmp(it->var,o_callee)) return 0; else return node; } else return node; } else if (o_context) { /* if context matters */- atom = (Atom*)FM_lookup(mapContext2Atom,(cast)parent);+ atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)parent); if (atom) {- it =(Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it =(Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); HIDE(fprintf(stderr,"(context is %s)",it->var);) if (it && !strcmp(it->var,o_caller)) return node; }@@ -231,13 +231,13 @@ fun = q_readFO(); /* fun ptr is an Atom ref */ q_fread(&size,sizeof(unsigned char),1,HatFileSeq); /* get arity */ for (i=0; i<size; i++) q_readFO(); /* skip args */- it = (Info*)FM_lookup(mapAtom2Info,(cast)fun);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)fun); if (it && !strcmp(it->var,o_callee)) { if (size >= it->arity) { if (o_context) { /* if context matters */- atom = (Atom*)FM_lookup(mapContext2Atom,(cast)parent);+ atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)parent); if (atom) {- it =(Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it =(Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); HIDE(fprintf(stderr,"(context is %s)",it->var);) if (it && !strcmp(it->var,o_caller)) return node; }@@ -272,9 +272,9 @@ if ((atom==Lambda)||(atom==DoLambda)) { if (o_context || !o_recursive) { Atom *atom; /* shadows outer scope */- atom = (Atom*)FM_lookup(mapContext2Atom,(cast)parent);+ atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)parent); if (atom) {- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); if (it) { if ( (!o_recursive && !strcmp(it->var,o_callee)) || (o_context && !strcmp(it->var,o_caller)) ) {@@ -284,7 +284,7 @@ } } } else {- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom); if (it) { if (!strcmp(it->var,o_callee)) { insert_map2(mapExp2Atom,node,atom,0);@@ -303,7 +303,7 @@ q_readFO(); /* skip parent */ result = q_readFO(); /* result might contain desired function */ atom = q_readFO(); /* get atom */- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom); if (it) { HIDE(fprintf(stderr,"ConstDef %s",it->var);) if (!strcmp(it->var,o_callee))@@ -322,16 +322,16 @@ { FileOffset exp; Atom *def; Info *it; q_readFO(); /* skip parent */ exp = q_readFO(); /* get ExpConstDef location */- def = (Atom*)FM_lookup(mapExp2Atom,(cast)exp);+ def = (Atom*)FM_lookup(mapExp2Atom,(cast)(uintptr_t)exp); if (def) { insert_map2(mapExp2Atom,node,def->atom,def->arity); // allows oversat apps- it = FM_lookup(mapAtom2Info,(cast)def->atom);+ it = FM_lookup(mapAtom2Info,(cast)(uintptr_t)def->atom); HIDE(if (it) fprintf(stderr,"%s",it->var);) if (it && !strcmp(it->var,o_callee)) return node; } else {- def = (Atom*)FM_lookup(mapContext2Atom,(cast)exp);+ def = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)exp); if (def) {- it = FM_lookup(mapAtom2Info,(cast)def->atom);+ it = FM_lookup(mapAtom2Info,(cast)(uintptr_t)def->atom); if (it && !strcmp(it->var,o_caller)) insert_map2(mapContext2Atom,node,def->atom,def->arity); }@@ -346,9 +346,9 @@ parent = q_readFO(); q_readFO(); /* skip result */ q_readFO(); /* skip condition */- atom = (Atom*)FM_lookup(mapContext2Atom,(cast)parent);+ atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)parent); if (atom) {- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); if (it) { if ( (!o_recursive && !strcmp(it->var,o_callee)) || (o_context && !strcmp(it->var,o_caller)) ) {@@ -469,17 +469,17 @@ fread(&size,sizeof(unsigned char),1,HatFileRandom); /* arity */ if (fun < caf) { /* fun already seen in linear scan */ if (o_context) {- atom = (Atom*)FM_lookup(mapContext2Atom,(cast)fun);+ atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)fun); if (atom) {- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); if (it && !strcmp(it->var,o_caller)) { insert_map2(mapContext2Atom,caf,atom->atom,size); } } }- atom = (Atom*)FM_lookup(mapExp2Atom,(cast)fun);+ atom = (Atom*)FM_lookup(mapExp2Atom,(cast)(uintptr_t)fun); if (atom) {- it = (Info*)FM_lookup(mapAtom2Info,(cast)atom->atom);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)atom->atom); if (it && !strcmp(it->var,o_callee) && ((size+arity)<atom->arity)) { HIDE(fprintf(stderr,"searchCAF: STORING caf=0x%x var=%s, size=%d\n",caf,it->var,size);)@@ -502,7 +502,7 @@ if (var==DoLambda) return; if (var < caf) { HIDE(fprintf(stderr,"searchCAF: var=0x%x < caf=0x%x\n",var,caf);)- it = (Info*)FM_lookup(mapAtom2Info,(cast)var);+ it = (Info*)FM_lookup(mapAtom2Info,(cast)(uintptr_t)var); HIDE(if (it) fprintf(stderr,"searchCAF: var=%s\n",it->var);) if (it && !strcmp(it->var,o_callee) && (arity<it->arity)) { HIDE(fprintf(stderr,"searchCAF: STORING caf=0x%x var=%s, size=%d\n",caf,it->var,arity);)