* src/vm/jit/trace.cpp: Method tracer can now trace builtin functions as well.
[cacao.git] / src / vm / options.h
index 700b9c950f49945b92ac0d535b380930bf063570..9a232a0246c54060e1784cb4e49baa6dc38a9620 100644 (file)
@@ -1,9 +1,7 @@
 /* src/vm/options.h - define global options extern
 
-   Copyright (C) 1996-2005, 2006 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.
 
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
-
-   Authors: Christian Thalinger
-
-   Changes:
-
-   $Id: options.h 5234 2006-08-14 17:50:12Z christian $
-
 */
 
 
 #ifndef _OPTIONS_H
 #define _OPTIONS_H
 
-
 #include "config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
 #include "vm/types.h"
 
-#include "native/jni.h"
+#include "native/jni.hpp"
+
 #include "vm/global.h"
 
 
 typedef struct opt_struct opt_struct;
 
 struct opt_struct {
-       char *name;
-       bool  arg;
-       int   value;
+       const char *name;
+       bool        arg;
+       int         value;
+};
+
+
+typedef struct option_t option_t;
+
+struct option_t {
+       const char *name;
+       int         value;
+       int         type;
+       const char *doc;
 };
 
 
@@ -80,42 +87,28 @@ extern s4   opt_heapstartsize;
 extern s4   opt_stacksize;
 
 extern bool opt_verbose;
-extern bool compileall;
+extern bool opt_debugcolor;
 
 extern bool loadverbose;         /* Print debug messages during loading */
-extern bool linkverbose;
 extern bool initverbose;         /* Log class initialization */ 
 
 extern bool opt_verboseclass;
 extern bool opt_verbosegc;
 extern bool opt_verbosejni;
 extern bool opt_verbosecall;
-extern bool opt_verboseexception;
 
 extern bool showmethods;
 extern bool showconstantpool;
 extern bool showutf;
 
-extern char *opt_method;
-extern char *opt_signature;
-
 extern bool compileverbose;
 extern bool showstack;
+
 extern bool opt_showdisassemble;
 extern bool opt_showddatasegment;
 extern bool opt_showintermediate;
-extern bool opt_showexceptionstubs;
-extern bool opt_shownativestub;
-
-extern bool useinlining;
-extern bool inlinevirtuals;
-extern bool inlineexceptions;
-extern bool inlineparamopt;
-extern bool inlineoutsiders;
 
 extern bool checkbounds;
-extern bool checknull;
-extern bool opt_noieee;
 extern bool checksync;
 #if defined(ENABLE_LOOP)
 extern bool opt_loops;
@@ -131,11 +124,11 @@ extern bool opt_getcompilingtime;
 #if defined(ENABLE_VERIFIER)
 extern bool opt_verify;
 #endif
-extern bool opt_eager;
 
+#if defined(ENABLE_PROFILING)
 extern bool opt_prof;
 extern bool opt_prof_bb;
-
+#endif
 
 /* optimization options *******************************************************/
 
@@ -146,7 +139,10 @@ extern bool opt_ifconv;
 #if defined(ENABLE_LSRA) || defined(ENABLE_SSA)
 extern bool opt_lsra;
 #endif
-
+#if defined(ENABLE_SSA)
+extern bool opt_ssa_dce;          /* enable dead code elemination */
+extern bool opt_ssa_cp;           /* enable copy propagation      */
+#endif
 
 /* interpreter options ********************************************************/
 
@@ -159,11 +155,112 @@ extern s4   opt_static_supers;
 extern bool vm_debug;
 #endif
 
+/* debug output filtering options *********************************************/
+
+#if defined(ENABLE_DEBUG_FILTER)
+extern const char *opt_filter_verbosecall_include;
+extern const char *opt_filter_verbosecall_exclude;
+extern const char *opt_filter_show_method;
+#endif
+
+
+/* -XX options ****************************************************************/
+
+/* NOTE: For better readability keep these alpha-sorted. */
+
+/* Options which must always be available (production options in
+   HotSpot). */
+
+extern int64_t  opt_MaxDirectMemorySize;
+extern int      opt_MaxPermSize;
+extern int      opt_PermSize;
+extern int      opt_ThreadStackSize;
+
+/* Debugging options which can be turned off. */
+
+extern bool     opt_AlwaysEmitLongBranches;
+extern int      opt_CompileAll;
+extern char*    opt_CompileMethod;
+extern char*    opt_CompileSignature;
+extern int      opt_DebugExceptions;
+extern int      opt_DebugFinalizer;
+extern int      opt_DebugLocalReferences;
+extern int      opt_DebugLocks;
+extern int      opt_DebugPatcher;
+extern int      opt_DebugPackage;
+extern int      opt_DebugProperties;
+extern int      opt_DebugStackFrameInfo;
+extern int      opt_DebugStackTrace;
+extern int      opt_DebugThreads;
+#if defined(ENABLE_DISASSEMBLER)
+extern int      opt_DisassembleStubs;
+#endif
+#if defined(ENABLE_OPAGENT)
+extern int      opt_EnableOpagent;
+#endif
+#if defined(ENABLE_GC_CACAO)
+extern int      opt_GCDebugRootSet;
+extern int      opt_GCStress;
+#endif
+#if defined(ENABLE_INLINING)
+extern int      opt_Inline;
+#if defined(ENABLE_INLINING_DEBUG) || !defined(NDEBUG)
+extern int      opt_InlineAll;
+extern int      opt_InlineCount;
+extern int      opt_InlineMaxSize;
+extern int      opt_InlineMinSize;
+#endif
+#endif
+extern int      opt_PrintConfig;
+extern int      opt_PrintWarnings;
+extern int      opt_ProfileGCMemoryUsage;
+extern int      opt_ProfileMemoryUsage;
+extern FILE    *opt_ProfileMemoryUsageGNUPlot;
+extern int      opt_RegallocSpillAll;
+#if defined(ENABLE_REPLACEMENT)
+extern int      opt_TestReplacement;
+#endif
+extern int      opt_TraceBuiltinCalls;
+extern int      opt_TraceCompilerCalls;
+extern int      opt_TraceExceptions;
+extern int      opt_TraceHPI;
+#if defined(ENABLE_INLINING) && !defined(NDEBUG)
+extern int      opt_TraceInlining;
+#endif
+extern int      opt_TraceJavaCalls;
+extern int      opt_TraceJNICalls;
+extern int      opt_TraceJVMCalls;
+extern int      opt_TraceJVMCallsVerbose;
+extern int      opt_TraceLinkClass;
+#if defined(ENABLE_REPLACEMENT)
+extern int      opt_TraceReplacement;
+#endif
+extern int      opt_TraceSubsystemInitialization;
+extern int      opt_TraceTraps;
+
 
 /* function prototypes ********************************************************/
 
-s4 options_get(opt_struct *opts, JavaVMInitArgs *vm_args);
-JavaVMInitArgs *options_prepare(int argc, char **argv);
+int  options_get(opt_struct *opts, JavaVMInitArgs *vm_args);
+void options_xx(JavaVMInitArgs *vm_args);
+
+
+/* debug **********************************************************************/
+
+#if !defined(NDEBUG)
+# define TRACESUBSYSTEMINITIALIZATION(text)                                            \
+    do {                                                                                                               \
+        if (opt_TraceSubsystemInitialization) {                                        \
+            log_println("[Initializing subsystem: %s]", text); \
+        }                                                                                                              \
+    } while (0)
+#else
+# define TRACESUBSYSTEMINITIALIZATION(text)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* _OPTIONS_H */