From: edwin Date: Mon, 24 Apr 2006 11:27:43 +0000 (+0000) Subject: * src/vm/cycles-stats.h (CYCLES_STATS_DECLARE_AND_START) X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=791379335b9d3c01a920786e94686877137824de;p=cacao.git * src/vm/cycles-stats.h (CYCLES_STATS_DECLARE_AND_START) (CYCLES_STATS_DECLARE_AND_START_WITH_OVERHEAD) (CYCLES_STATS_END, CYCLES_STATS_END_WITH_OVERHEAD): Added convenience macros. * src/vm/cycles-stats.c (cycles_stats_print): Fixed divide-by-zero. Minor output changes. --- diff --git a/src/vm/cycles-stats.c b/src/vm/cycles-stats.c index 0215d3686..5f05831b6 100644 --- a/src/vm/cycles-stats.c +++ b/src/vm/cycles-stats.c @@ -226,14 +226,14 @@ void cycles_stats_print(FILE *file, cumul = 0; for (i=0; i= %5d: %10s (----) %10lu\n", + fprintf(file,"\t\t>= %8d: %10s (----) %10lu\n", (int)(nbins * div), "OVER", (unsigned long) bins[nbins]); diff --git a/src/vm/cycles-stats.h b/src/vm/cycles-stats.h index 411b2bdeb..5ce93dfbc 100644 --- a/src/vm/cycles-stats.h +++ b/src/vm/cycles-stats.h @@ -88,6 +88,24 @@ cycles_stats_##name##_min, cycles_stats_##name##_max, 1); \ } while (0) +#define CYCLES_STATS_DECLARE_AND_START \ + u8 cycles_start = asm_get_cycle_count(); \ + u8 cycles_end; + +#define CYCLES_STATS_DECLARE_AND_START_WITH_OVERHEAD \ + u8 cycles_start = asm_get_cycle_count(); \ + u8 cycles_overhead = asm_get_cycle_count(); \ + u8 cycles_end; + +#define CYCLES_STATS_END(name) \ + cycles_end = asm_get_cycle_count(); \ + CYCLES_STATS_COUNT(name, cycles_end - cycles_start); + +#define CYCLES_STATS_END_WITH_OVERHEAD(name,ovname) \ + cycles_end = asm_get_cycle_count(); \ + CYCLES_STATS_COUNT(ovname, cycles_overhead - cycles_start); \ + CYCLES_STATS_COUNT(name, cycles_end - cycles_overhead); + void cycles_stats_print(FILE *file, const char *name, int nbins, int div, u4 *bins, u8 count, u8 total, u8 min, u8 max, @@ -101,6 +119,10 @@ void cycles_stats_print(FILE *file, #define CYCLES_STATS_COUNT(name,cyclesexpr) #define CYCLES_STATS_PRINT(name,file) #define CYCLES_STATS_PRINT_OVERHEAD(name,file) +#define CYCLES_STATS_DECLARE_AND_START +#define CYCLES_STATS_DECLARE_AND_START_WITH_OVERHEAD +#define CYCLES_STATS_END(name) +#define CYCLES_STATS_END_WITH_OVERHEAD(name) #endif /* defined(ENABLE_CYCLES_STATS) */