Diff for /gforth/engine/profile.c between versions 1.5 and 1.11

version 1.5, 2001/03/18 10:33:25 version 1.11, 2003/10/09 20:25:59
Line 1 Line 1
 /* VM profiling support stuff  /* VM profiling support stuff
   
   Copyright (C) 2001 Free Software Foundation, Inc.    Copyright (C) 2001,2002,2003 Free Software Foundation, Inc.
   
   This file is part of Gforth.    This file is part of Gforth.
   
Line 20 Line 20
 */  */
   
 #include "config.h"  #include "config.h"
   #include "forth.h"
 #include <stdlib.h>  #include <stdlib.h>
 #include <stdio.h>  #include <stdio.h>
 #include <assert.h>  #include <assert.h>
 #include "forth.h"  
   
   
 /* data structure: simple hash table with external chaining */  /* data structure: simple hash table with external chaining */
Line 85  void vm_count_block(Xt *ip) Line 85  void vm_count_block(Xt *ip)
 }  }
   
 #ifdef DIRECT_THREADED  #ifdef DIRECT_THREADED
 #define VM_IS_INST(inst, n) ((inst) == vm_prims[(n)+DOESJUMP+1])  #define VM_IS_INST(inst, n) ((inst) == vm_prims[n])
 #else  #else
 #define VM_IS_INST(inst, n) ((inst) == &(vm_prims[(n)+DOESJUMP+1]))  #define VM_IS_INST(inst, n) ((inst) == &(vm_prims[n]))
 #endif  #endif
   
 void postprocess_block(block_count *b)  void postprocess_block(block_count *b)
Line 128  void postprocess(void) Line 128  void postprocess(void)
    }     }
 }  }
   
 #if 0  #if 1
   /* full basic blocks only */
 void print_block(FILE *file, block_count *b)  void print_block(FILE *file, block_count *b)
 {  {
   size_t i;    size_t i;
Line 138  void print_block(FILE *file, block_count Line 139  void print_block(FILE *file, block_count
     fprintf(file, "%s ", b->insts[i]);      fprintf(file, "%s ", b->insts[i]);
   putc('\n', file);    putc('\n', file);
 }  }
 #endif  #elif 0
   /* full basic blocks and all their prefixes */
   void print_block(FILE *file, block_count *b)
   {
     size_t i,j;
   
     for (j=1; j<=b->ninsts; j++) {
       fprintf(file,"%14lld\t",b->count);
       for (i=0; i<j; i++)
         fprintf(file, "%s ", b->insts[i]);
       putc('\n', file);
     }
   }
   #else
   /* all subsequences up to length 12 */
 void print_block(FILE *file, block_count *b)  void print_block(FILE *file, block_count *b)
 {  {
   size_t i,j,k;    size_t i,j,k;
   
   for (i=2; i<12; i++)    for (i=1; i<2; i++)
     for (j=0; i+j<=b->ninsts; j++) {      for (j=0; i+j<=b->ninsts; j++) {
       fprintf(file,"%14lld\t",b->count);        fprintf(file,"%14lld\t",b->count);
       for (k=j; k<i+j; k++)        for (k=j; k<i+j; k++)
Line 152  void print_block(FILE *file, block_count Line 166  void print_block(FILE *file, block_count
       putc('\n', file);        putc('\n', file);
     }      }
 }  }
   #endif
   
 void vm_print_profile(FILE *file)  void vm_print_profile(FILE *file)
 {  {

Removed from v.1.5  
changed lines
  Added in v.1.11


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