Diff for /gforth/vmgen-ex/profile.c between versions 1.1 and 1.2

version 1.1, 2001/04/29 11:28:24 version 1.2, 2001/05/01 10:20:56
Line 27 Line 27
 /* data structure: simple hash table with external chaining */  /* data structure: simple hash table with external chaining */
   
 #define HASH_SIZE (1<<20)  #define HASH_SIZE (1<<20)
   #define hash(p) ((((Cell)(p))/sizeof(Inst))&(HASH_SIZE-1))
   
 typedef struct block_count {  typedef struct block_count {
   struct block_count *next; /* next in hash table */    struct block_count *next; /* next in hash table */
Line 39  typedef struct block_count { Line 40  typedef struct block_count {
 } block_count;  } block_count;
   
 block_count *blocks[HASH_SIZE];  block_count *blocks[HASH_SIZE];
   Inst *vmcode_end;
 #define hash(p) ((((Cell)(p))/sizeof(Inst))&(HASH_SIZE-1))  
   
 block_count *block_lookup(Inst *ip)  block_count *block_lookup(Inst *ip)
 {  {
Line 87  void vm_count_block(Inst *ip) Line 87  void vm_count_block(Inst *ip)
 void postprocess_block(block_count *b)  void postprocess_block(block_count *b)
 {  {
   Inst *ip = b->ip;    Inst *ip = b->ip;
   block_count *next_block;    block_count *next_block=NULL;
   
   do {    while (next_block == NULL && ip<vmcode_end) {
 #include "mini-profile.i"  #include "mini-profile.i"
     /* else */      /* else */
     {      {
Line 98  void postprocess_block(block_count *b) Line 98  void postprocess_block(block_count *b)
     }      }
   _endif_:    _endif_:
     next_block = block_lookup(ip);      next_block = block_lookup(ip);
   } while (next_block == NULL);    }
   /* we fell through, so set fallthrough and update the count */    /* we fell through, so set fallthrough and update the count */
   b->fallthrough = next_block;    b->fallthrough = next_block;
   /* also update the counts of all following fallthrough blocks that    /* also update the counts of all following fallthrough blocks that

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>