* merged with tip (040f180a056b)
[cacao.git] / src / vm / statistics.h
index 4304f442262a6c12156f2ea98f763e289b7844e4..46bebed985232e50a1586295cc1d4743ab5b9870 100644 (file)
@@ -1,9 +1,7 @@
-/* vm/statistics.h - exports global varables for statistics
+/* src/vm/statistics.h - exports global varables for statistics
 
-   Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
-   R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
-   C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
-   Institut f. Computersprachen - TU Wien
+   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 1971 2005-03-01 20:06:36Z carolyn $
+   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"
-                               /* in_  inline statistics */
 
-#define IN_MAX 9
+
+/* 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_MAXDEPTH             0x0008
 #define IN_MAXCODE              0x0010
 #define IN_JCODELENGTH          0x0020
 #define IN_EXCEPTION            0x0040
 #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 s4 size_cachedref;
+
+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*/
@@ -95,11 +143,19 @@ 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;
+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;
@@ -132,9 +188,18 @@ extern int count_tryblocks;
 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;
@@ -155,24 +220,37 @@ 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 ********************************************************/
 
-s8 getcputime();
+s8 getcputime(void);
 
-void loadingtime_start();
-void loadingtime_stop();
-void compilingtime_start();
-void compilingtime_stop();
+void loadingtime_start(void);
+void loadingtime_stop(void);
+void compilingtime_start(void);
+void compilingtime_stop(void);
 
-void print_times();
-void print_stats();
+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);
+
 #endif /* _STATISTICS_H */