--- gforth/engine/profile.c 2001/02/28 22:31:43 1.2 +++ gforth/engine/profile.c 2002/02/10 14:02:25 1.6 @@ -102,6 +102,7 @@ void postprocess_block(block_count *b) add_inst(b,"unknown"); ip++; } + _endif_: next_block = block_lookup(ip); } while (next_block == NULL); /* we fell through, so set fallthrough and update the count */ @@ -127,6 +128,8 @@ void postprocess(void) } } +#if 0 +/* full basic blocks only */ void print_block(FILE *file, block_count *b) { size_t i; @@ -136,6 +139,34 @@ void print_block(FILE *file, block_count fprintf(file, "%s ", b->insts[i]); putc('\n', file); } +#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; iinsts[i]); + putc('\n', file); + } +} +#else +/* all subsequences up to length 12 */ +void print_block(FILE *file, block_count *b) +{ + size_t i,j,k; + + for (i=2; i<12; i++) + for (j=0; i+j<=b->ninsts; j++) { + fprintf(file,"%14lld\t",b->count); + for (k=j; kinsts[k]); + putc('\n', file); + } +} +#endif void vm_print_profile(FILE *file) {