#ifndef _PROFILE_H #define _PROFILE_H #define TABLELOG 10 typedef union { Int i; char *s; #ifdef DYNAMIC Retainer *r; #endif } Key; typedef struct COUNT { struct COUNT *next; int key_i; int size; } Count; typedef struct ELEMENT { struct ELEMENT *next; Key key; Count *count; } Element; #define BIO_DRAG 1 #define BIO_LAG 2 #define BIO_USE 4 #define BIO_VOID 8 typedef struct RESTRICTION { struct RESTRICTION *next; int address; char *str; } Restriction; extern Restriction *restriction[9]; /* Only 1 2 4 and 8 is used */ extern int RestrictionKind; extern int lifetimeLow,lifetimeHigh; extern int PrintUse; extern int TotalUse; extern int TotalLive; extern void profile_start(int argc,char **argv); extern void profile_stop(NodePtr hp); extern void profile_again(int argc,char **argv); extern void addRestrictions(char *restrictions,int kind); #ifdef DYNAMIC extern int dynamicRestrictions(Info *info); extern int RestrictionBiography; extern Retainer *RetainerTable[]; extern void printTableRetainer(FILE *fp); extern int keepFunction(char *function); extern int memberAdr(int keep,char *function,Retainer *rinfo); extern void saveLastUse(Info *info); #endif extern int hashInt(Int); #endif