X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FClosureMacros.h;h=6d0bb6e4808a46bd3c18b7888b231dacb6733c93;hb=eb407ca1d21a43ff86ad731868f71e994afafe78;hp=fca822fea4efdb85fb0378be21d60b175f2f3ab4;hpb=18dcf7758b1dd0b87c24ba829ecd32d35b8924cf;p=ghc-hetmet.git diff --git a/ghc/includes/ClosureMacros.h b/ghc/includes/ClosureMacros.h index fca822f..6d0bb6e 100644 --- a/ghc/includes/ClosureMacros.h +++ b/ghc/includes/ClosureMacros.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: ClosureMacros.h,v 1.11 1999/04/23 13:54:12 simonm Exp $ + * $Id: ClosureMacros.h,v 1.15 1999/05/11 16:47:39 keithw Exp $ * * (c) The GHC Team, 1998-1999 * @@ -131,11 +131,10 @@ extern int is_heap_alloced(const void* x); #define LOOKS_LIKE_STATIC(r) (!(HEAP_ALLOCED(r))) /* Tiresome predicates needed to check for pointers into the closure tables */ -#define IS_BOOL_CLOSURE(p) ( stgCast(StgPtr,p) >= stgCast(StgPtr,PrelBase_Bool_closure_tbl) && stgCast(char*,p) <= (stgCast(char*,PrelBase_Bool_closure_tbl) + 2 * sizeof(StgClosure))) #define IS_CHARLIKE_CLOSURE(p) ( stgCast(StgPtr,p) >= stgCast(StgPtr,CHARLIKE_closure) && stgCast(char*,p) <= (stgCast(char*,CHARLIKE_closure) + 255 * sizeof(StgIntCharlikeClosure))) #define IS_INTLIKE_CLOSURE(p) ( stgCast(StgPtr,p) >= stgCast(StgPtr,INTLIKE_closure) && stgCast(char*,p) <= (stgCast(char*,INTLIKE_closure) + 32 * sizeof(StgIntCharlikeClosure))) -#define LOOKS_LIKE_STATIC_CLOSURE(r) (((*(((unsigned long *)(r))-1)) == 0) || IS_CHARLIKE_CLOSURE(r) || IS_INTLIKE_CLOSURE(r) || IS_BOOL_CLOSURE(r)) +#define LOOKS_LIKE_STATIC_CLOSURE(r) (((*(((unsigned long *)(r))-1)) == 0) || IS_CHARLIKE_CLOSURE(r) || IS_INTLIKE_CLOSURE(r)) #else #define LOOKS_LIKE_STATIC(r) IS_DATA_PTR(r) #define LOOKS_LIKE_STATIC_CLOSURE(r) IS_DATA_PTR(r) @@ -266,9 +265,9 @@ static __inline__ StgWord tso_sizeW ( StgTSO *tso ) #define SET_STATIC_PAR_HDR(stuff) #endif -#ifdef TICKY -#define SET_TICKY_HDR(c,stuff) (c)->header.ticky.updated = stuff -#define SET_STATIC_TICKY_HDR(stuff) ticky : { updated : stuff } +#ifdef TICKY_TICKY +#define SET_TICKY_HDR(c,stuff) /* old: (c)->header.ticky.updated = stuff */ +#define SET_STATIC_TICKY_HDR(stuff) /* old: ticky : { updated : stuff } */ #else #define SET_TICKY_HDR(c,stuff) #define SET_STATIC_TICKY_HDR(stuff) @@ -338,6 +337,12 @@ SET_STATIC_HDR(PrelBase_CZh_closure,PrelBase_CZh_info,costCentreStack,const); #define INTLIKE_CLOSURE(n) ((P_)&INTLIKE_closure[(n)-MIN_INTLIKE]) /* ----------------------------------------------------------------------------- + Closure Tables (for enumerated data types) + -------------------------------------------------------------------------- */ + +#define CLOSURE_TBL(lbl) const StgClosure *lbl[] = { + +/* ----------------------------------------------------------------------------- Payload access -------------------------------------------------------------------------- */ @@ -367,5 +372,7 @@ SET_STATIC_HDR(PrelBase_CZh_closure,PrelBase_CZh_info,costCentreStack,const); #define bcoConstFloat( bco, i ) (PK_FLT(stgCast(StgWord*,(bco)->payload+(bco)->n_ptrs+i))) #define bcoConstDouble( bco, i ) (PK_DBL(stgCast(StgWord*,(bco)->payload+(bco)->n_ptrs+i))) #define bcoInstr( bco, i ) (stgCast(StgWord8*, ((bco)->payload+(bco)->n_ptrs+(bco)->n_words))[i]) +static __inline__ StgInt bcoInstr16 ( StgBCO* bco, unsigned int i ) +{ StgInt x = (bcoInstr(bco,i) << 8) + bcoInstr(bco,i+1); return x; } #endif /* CLOSUREMACROS_H */