/*
- * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
#ifndef FIRM_STATEVENT_H
#define FIRM_STATEVENT_H
-#ifndef FIRM_STATISTICS
+#if !defined(FIRM_STATISTICS) || defined(DISABLE_STATEV)
#define stat_ev_do(expr)
+#define stat_ev_enabled 0
#define stat_ev_if if (0)
#define stat_ev_dbl(name, val)
#define stat_ev_int(name, val)
#define stat_ev(name)
+#define stat_ev_emit(name, value)
#define stat_ev_cnt_decl(var)
#define stat_ev_cnt_inc(var)
#else
#include <stdio.h>
-#include "timing.h"
+#include "stat_timing.h"
-extern void stat_ev_printf(char ev_type, const char *key, const char *fmt, ...);
+extern void stat_ev_printf(char ev_type, const char *key, const char *fmt, ...);
-extern int stat_ev_enabled;
-extern int stat_ev_timer_sp;
-extern timing_ticks_t stat_ev_timer_elapsed[];
-extern timing_ticks_t stat_ev_timer_start[];
-extern timing_sched_env_t stat_ev_sched_rt;
-extern timing_sched_env_t stat_ev_sched_normal;
+extern int stat_ev_enabled;
+extern int stat_ev_timer_sp;
+extern timing_ticks_t stat_ev_timer_elapsed[];
+extern timing_ticks_t stat_ev_timer_start[];
-static INLINE __attribute__((unused)) void stat_ev_tim_push(void) {
+static inline void stat_ev_tim_push(void) {
timing_ticks_t temp;
int sp = stat_ev_timer_sp++;
timing_ticks(temp);
- if (sp == 0)
- timing_sched_set(&stat_ev_sched_rt);
- else {
+ if (sp == 0) {
+ timing_enter_max_prio();
+ } else {
timing_ticks_sub(temp, stat_ev_timer_start[sp - 1]);
timing_ticks_add(stat_ev_timer_elapsed[sp - 1], temp);
}
timing_ticks(stat_ev_timer_start[sp]);
}
-static INLINE __attribute__((unused)) void stat_ev_tim_pop(const char *name) {
+static inline void stat_ev_tim_pop(const char *name) {
int sp;
timing_ticks_t temp;
timing_ticks(temp);
timing_ticks_add(stat_ev_timer_elapsed[sp], temp);
if (name != NULL && stat_ev_enabled)
stat_ev_printf('E', name, "%g", timing_ticks_dbl(stat_ev_timer_elapsed[sp]));
- if (sp == 0)
- timing_sched_set(&stat_ev_sched_normal);
- else
+ if (sp == 0) {
+ timing_leave_max_prio();
+ } else {
timing_ticks(stat_ev_timer_start[sp - 1]);
+ }
}
#define stat_ev_ctx_push_fmt(key, fmt, value) \