/* src/vm/statistics.h - exports global varables for statistics Copyright (C) 1996-2005, 2006, 2007, 2008 CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO This file is part of CACAO. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _STATISTICS_H #define _STATISTICS_H #include "config.h" #include #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 /* 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 #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; /* 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_vmcode_len; extern int count_extable_len; extern int count_class_loads; extern int count_class_inits; extern int count_utf_len; /* size of utf hash */ 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_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_pcmd_const_store; extern int count_pcmd_const_alu; extern int count_pcmd_const_bra; extern int count_pcmd_load; extern int count_pcmd_move; extern int count_load_instruction; extern int count_pcmd_store; extern int count_pcmd_store_comb; extern int count_dup_instruction; extern int count_pcmd_op; extern int count_pcmd_mem; extern int count_pcmd_met; extern int count_pcmd_bra; extern int count_pcmd_table; extern int count_pcmd_return; extern int count_pcmd_returnx; extern int count_check_null; extern int count_check_bound; extern int count_max_basic_blocks; extern int count_basic_blocks; extern int count_max_javainstr; extern int count_javainstr; extern int count_javacodesize; extern int count_javaexcsize; extern int count_calls; extern int count_tryblocks; extern int count_code_len; extern int count_data_len; extern int count_cstub_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]; /* instruction scheduler statistics *******************************************/ 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; /* 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 */ /* * These are local overrides for various environment variables in Emacs. * Please do not remove this and leave it at the end of the file, where * Emacs will automagically detect them. * --------------------------------------------------------------------- * Local variables: * mode: c * indent-tabs-mode: t * c-basic-offset: 4 * tab-width: 4 * End: */