-/* statistics.h - exports global varables for statistics
+/* src/vm/statistics.h - exports global varables for statistics
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Institut f. Computersprachen, TU Wien
- R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser, M. Probst,
- S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich,
- J. Wenninger
+ Copyright (C) 1996-2005, 2006, 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
This file is part of CACAO.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA.
-
- Contact: cacao@complang.tuwien.ac.at
-
- Authors: Christian Thalinger
-
- $Id: statistics.h 1438 2004-11-05 09:52:49Z twisti $
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
*/
#ifndef _STATISTICS_H
#define _STATISTICS_H
+#include "config.h"
+
+#include <stdint.h>
+
+#include "vm/types.h"
+
+#include "vm/global.h"
+
+
+/* statistic macros ***********************************************************/
+
+#if defined(ENABLE_STATISTICS)
+#define STATISTICS(x) \
+ do { \
+ if (opt_stat) { \
+ x; \
+ } \
+ } while (0)
+#else
+#define STATISTICS(x) /* nothing */
+#endif
-#include "global.h"
+/* in_ inline statistics */
+#define IN_MAX 9
+#define IN_UNIQUEVIRT 0x0000
+#define IN_UNIQUE_INTERFACE 0x0001
+#define IN_OUTSIDERS 0x0004
+#define IN_MAXDEPTH 0x0008
+#define IN_MAXCODE 0x0010
+#define IN_JCODELENGTH 0x0020
+#define IN_EXCEPTION 0x0040
+#define IN_NOT_UNIQUE_VIRT 0x0080
+#define IN_NOT_UNIQUE_INTERFACE 0x0100
-/* global variables */
+#define N_UNIQUEVIRT 0
+#define N_UNIQUE_INTERFACE 1
+#define N_OUTSIDERS 2
+#define N_MAXDEPTH 3
+#define N_MAXCODE 4
+#define N_JCODELENGTH 5
+#define N_EXCEPTION 6
+#define N_NOT_UNIQUE_VIRT 7
+#define N_NOT_UNIQUE_INTERFACE 8
+
+
+/* global variables ***********************************************************/
+
+extern s4 codememusage;
+extern s4 maxcodememusage;
extern s4 memoryusage;
extern s4 maxmemusage;
+
extern s4 maxdumpsize;
extern s4 globalallocateddumpsize;
extern s4 globaluseddumpsize;
-extern int count_class_infos; /* variables for measurements */
+
+/* variables for measurements *************************************************/
+
+extern s4 size_classinfo;
+extern s4 size_fieldinfo;
+extern s4 size_methodinfo;
+extern s4 size_lineinfo;
+extern s4 size_codeinfo;
+
+extern s4 size_stub_native;
+
+extern s4 size_stack_map;
+extern s4 size_string;
+
+extern s4 size_threadobject;
+extern int32_t size_thread_index_t;
+extern int32_t size_stacksize;
+
+extern s4 size_lock_record;
+extern s4 size_lock_hashtable;
+extern s4 size_lock_waiter;
+
+extern int32_t count_linenumbertable;
+extern int32_t size_linenumbertable;
+
+extern s4 size_patchref;
+
+extern u8 count_calls_java_to_native;
+extern u8 count_calls_native_to_java;
+
extern int count_const_pool_len;
+extern int count_classref_len;
+extern int count_parsed_desc_len;
extern int count_vftbl_len;
extern int count_all_methods;
extern int count_methods_marked_used; /*RTA*/
extern int count_utf_new;
extern int count_utf_new_found;
+extern int count_locals_conflicts;
+extern int count_locals_spilled;
+extern int count_locals_register;
+extern int count_ss_spilled;
+extern int count_ss_register;
+extern int count_methods_allocated_by_lsra;
+extern int count_mem_move_bb;
+extern int count_interface_size;
+extern int count_argument_mem_ss;
+extern int count_argument_reg_ss;
+extern int count_method_in_register;
+extern int count_mov_reg_reg;
+extern int count_mov_mem_reg;
+extern int count_mov_reg_mem;
+extern int count_mov_mem_mem;
+
extern int count_jit_calls;
extern int count_methods;
-extern int count_spills;
+extern int count_spills_read_ila;
+extern int count_spills_read_flt;
+extern int count_spills_read_dbl;
+extern int count_spills_write_ila;
+extern int count_spills_write_flt;
+extern int count_spills_write_dbl;
extern int count_pcmd_activ;
extern int count_pcmd_drop;
extern int count_pcmd_zero;
extern int count_code_len;
extern int count_data_len;
extern int count_cstub_len;
-extern int count_nstub_len;
extern int count_max_new_stack;
extern int count_upper_bound_new_stack;
+
+extern int count_emit_branch;
+extern int count_emit_branch_8bit;
+extern int count_emit_branch_16bit;
+extern int count_emit_branch_32bit;
+extern int count_emit_branch_64bit;
+
+extern s4 count_branches_resolved;
+extern s4 count_branches_unresolved;
+
extern int *count_block_stack;
extern int *count_analyse_iterations;
extern int *count_method_bb_distribution;
extern int *count_block_size_distribution;
extern int *count_store_length;
extern int *count_store_depth;
+ /* in_ inline statistics */
+extern int count_in;
+extern int count_in_uniqVirt;
+extern int count_in_uniqIntf;
+extern int count_in_rejected;
+extern int count_in_rejected_mult;
+extern int count_in_outsiders;
+extern int count_in_uniqueVirt_not_inlined;
+extern int count_in_uniqueInterface_not_inlined;
+extern int count_in_maxDepth;
+extern int count_in_maxMethods;
+extern u2 count_in_not [512];
-/* function prototypes */
+/* instruction scheduler statistics *******************************************/
-s8 getcputime();
+extern s4 count_schedule_basic_blocks;
+extern s4 count_schedule_nodes;
+extern s4 count_schedule_leaders;
+extern s4 count_schedule_max_leaders;
+extern s4 count_schedule_critical_path;
-void loadingtime_start();
-void loadingtime_stop();
-void compilingtime_start();
-void compilingtime_stop();
-void print_times();
-void print_stats();
+/* function prototypes ********************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+s8 getcputime(void);
+
+void loadingtime_start(void);
+void loadingtime_stop(void);
+void compilingtime_start(void);
+void compilingtime_stop(void);
+
+void print_times(void);
+void print_stats(void);
+
+void statistics_print_date(void);
+void statistics_print_memory_usage(void);
+void statistics_print_gc_memory_usage(void);
void mem_usagelog(bool givewarnings);
-
+
+void compiledinvokation(void);
+void jnicallXmethodnvokation(void);
+void jniinvokation(void);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _STATISTICS_H */