version 1.1, 2002/06/02 15:46:18
|
version 1.2, 2002/06/02 17:02:57
|
Line 29
|
Line 29
|
#define HASH_SIZE (1<<20) |
#define HASH_SIZE (1<<20) |
#define hash(p) ((((long)(p))/sizeof(Inst))&(HASH_SIZE-1)) |
#define hash(p) ((((long)(p))/sizeof(Inst))&(HASH_SIZE-1)) |
|
|
|
#ifdef __GNUC__ |
|
typedef long long long_long; |
|
#else |
|
typedef long long_long; |
|
#endif |
|
|
typedef struct block_count { |
typedef struct block_count { |
struct block_count *next; /* next in hash table */ |
struct block_count *next; /* next in hash table */ |
struct block_count *fallthrough; /* the block that this one falls |
struct block_count *fallthrough; /* the block that this one falls |
through to without SUPER_END */ |
through to without SUPER_END */ |
Inst *ip; |
Inst *ip; |
long long count; |
long_long count; |
char **insts; |
char **insts; |
size_t ninsts; |
size_t ninsts; |
} block_count; |
} block_count; |
Line 63 block_count *block_insert(Inst *ip)
|
Line 69 block_count *block_insert(Inst *ip)
|
new->next = blocks[hash(ip)]; |
new->next = blocks[hash(ip)]; |
new->fallthrough = NULL; |
new->fallthrough = NULL; |
new->ip = ip; |
new->ip = ip; |
new->count = 0LL; |
new->count = (long_long)0; |
new->insts = malloc(0); |
new->insts = malloc(0); |
assert(new->insts != NULL); |
assert(new->insts != NULL); |
new->ninsts = 0; |
new->ninsts = 0; |