CACAO
options.hpp
Go to the documentation of this file.
1 /* src/vm/options.hpp - define global options extern
2 
3  Copyright (C) 1996-2013
4  CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5 
6  This file is part of CACAO.
7 
8  This program is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 2, or (at
11  your option) any later version.
12 
13  This program is distributed in the hope that it will be useful, but
14  WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  02110-1301, USA.
22 
23 */
24 
25 
26 #ifndef OPTIONS_HPP_
27 #define OPTIONS_HPP_ 1
28 
29 #include <stdint.h> // for int64_t
30 #include <stdio.h> // for FILE
31 #include "config.h" // for ENABLE_DEBUG_FILTER, etc
32 #include "native/jni.hpp" // for JavaVMInitArgs
33 #include "toolbox/logging.hpp"
34 #include "vm/types.hpp" // for s4
35 
36 struct opt_struct;
37 struct option_t;
38 
39 /* reserved option numbers ****************************************************/
40 
41 /* define these negative since the other options are an enum */
42 
43 #define OPT_DONE -1
44 #define OPT_ERROR -2
45 #define OPT_IGNORE -3
46 
47 
48 typedef struct opt_struct opt_struct;
49 
50 struct opt_struct {
51  const char *name;
52  bool arg;
53  int value;
54 };
55 
56 
57 typedef struct option_t option_t;
58 
59 struct option_t {
60  const char *name;
61  int value;
62  int type;
63  const char *doc;
64 };
65 
66 
67 /* global variables ***********************************************************/
68 
69 extern s4 opt_index;
70 extern char *opt_arg;
71 
72 extern bool opt_foo;
73 
74 extern bool opt_jit;
75 extern bool opt_intrp;
76 
77 extern bool opt_jar;
78 extern bool opt_run;
79 
80 extern s4 opt_heapmaxsize;
81 extern s4 opt_heapstartsize;
82 extern s4 opt_stacksize;
83 
84 extern bool opt_verbose;
85 extern bool opt_debugcolor;
86 
87 extern bool loadverbose; /* Print debug messages during loading */
88 extern bool initverbose; /* Log class initialization */
89 
90 extern bool opt_verboseclass;
91 extern bool opt_verbosegc;
92 extern bool opt_verbosejni;
93 extern bool opt_verbosecall;
94 
95 extern bool showmethods;
96 extern bool showconstantpool;
97 extern bool showutf;
98 
99 extern bool compileverbose;
100 extern bool showstack;
101 
102 extern bool opt_showdisassemble;
103 extern bool opt_showddatasegment;
104 extern bool opt_showintermediate;
105 
106 extern bool checkbounds;
107 extern bool checksync;
108 #if defined(ENABLE_LOOP)
109 extern bool opt_loops;
110 #endif
111 
112 extern bool makeinitializations;
113 
114 #if defined(ENABLE_STATISTICS)
115 extern bool opt_stat;
116 extern bool opt_getloadingtime;
117 extern bool opt_getcompilingtime;
118 #endif
119 #if defined(ENABLE_VERIFIER)
120 extern bool opt_verify;
121 #endif
122 
123 #if defined(ENABLE_PROFILING)
124 extern bool opt_prof;
125 extern bool opt_prof_bb;
126 #endif
127 
128 /* optimization options *******************************************************/
129 
130 #if defined(ENABLE_IFCONV)
131 extern bool opt_ifconv;
132 #endif
133 
134 #if defined(ENABLE_LSRA) || defined(ENABLE_SSA)
135 extern bool opt_lsra;
136 #endif
137 #if defined(ENABLE_SSA)
138 extern bool opt_ssa_dce; /* enable dead code elemination */
139 extern bool opt_ssa_cp; /* enable copy propagation */
140 #endif
141 
142 /* interpreter options ********************************************************/
143 
144 #if defined(ENABLE_INTRP)
145 extern bool opt_no_dynamic;
146 extern bool opt_no_replication;
147 extern bool opt_no_quicksuper;
148 
149 extern s4 opt_static_supers;
150 extern bool vm_debug;
151 #endif
152 
153 /* debug output filtering options *********************************************/
154 
155 #if defined(ENABLE_DEBUG_FILTER)
156 extern const char *opt_filter_verbosecall_include;
157 extern const char *opt_filter_verbosecall_exclude;
158 extern const char *opt_filter_show_method;
159 #endif
160 
161 
162 /* -XX options ****************************************************************/
163 
164 /* NOTE: For better readability keep these alpha-sorted. */
165 
166 /* Options which must always be available (production options in
167  HotSpot). */
168 
169 extern int64_t opt_MaxDirectMemorySize;
170 extern int opt_MaxPermSize;
171 extern int opt_PermSize;
172 extern int opt_ThreadStackSize;
173 
174 /* Debugging options which can be turned off. */
175 
176 extern bool opt_AlwaysEmitLongBranches;
177 extern bool opt_AlwaysMmapFirstPage;
178 extern int opt_CompileAll;
179 extern char* opt_CompileMethod;
180 extern char* opt_CompileSignature;
181 extern int opt_DebugLocalReferences;
182 extern int opt_DebugLocks;
183 extern int opt_DebugPatcher;
184 extern int opt_DebugPackage;
185 extern int opt_DebugStackFrameInfo;
186 extern int opt_DebugStackTrace;
187 extern int opt_DebugThreads;
188 #if defined(ENABLE_DISASSEMBLER)
189 extern int opt_DisassembleStubs;
190 #endif
191 #if defined(ENABLE_OPAGENT)
192 extern int opt_EnableOpagent;
193 #endif
194 #if defined(ENABLE_GC_CACAO)
195 extern int opt_GCDebugRootSet;
196 extern int opt_GCStress;
197 #endif
198 #if defined(ENABLE_INLINING)
199 extern int opt_Inline;
200 #if defined(ENABLE_INLINING_DEBUG) || !defined(NDEBUG)
201 extern int opt_InlineAll;
202 extern int opt_InlineCount;
203 extern int opt_InlineMaxSize;
204 extern int opt_InlineMinSize;
205 extern char* opt_InlineMethod;
206 extern Utf8String opt_InlineMethodUtf;
207 #endif
208 #endif
209 extern int opt_PrintConfig;
210 extern int opt_PrintWarnings;
211 extern int opt_ProfileGCMemoryUsage;
212 extern int opt_ProfileMemoryUsage;
213 extern FILE *opt_ProfileMemoryUsageGNUPlot;
214 extern int opt_RegallocSpillAll;
215 #if defined(ENABLE_COMPILER2)
216 extern char *opt_ReplaceMethod;
217 extern char *opt_OptimizeMethod;
218 extern bool opt_DisableCountdownTraps;
219 #endif
220 extern int opt_TraceBuiltinCalls;
221 extern int opt_TraceCompilerCalls;
222 extern int opt_TraceExceptions;
223 extern int opt_TraceHPI;
224 #if defined(ENABLE_INLINING) && !defined(NDEBUG)
225 extern int opt_TraceInlining;
226 #endif
227 extern int opt_TraceJavaCalls;
228 extern bool opt_TraceJMMCalls;
229 extern int opt_TraceJNICalls;
230 extern int opt_TraceJVMCalls;
231 extern int opt_TraceJVMCallsVerbose;
232 #if defined(ENABLE_JVMTI)
233 extern int opt_TraceJVMTICalls;
234 #endif
235 extern int opt_TraceLinkClass;
236 #if defined(ENABLE_RT_TIMING)
237 extern FILE *opt_RtTimingLogfile;
238 extern bool opt_RtTimingCSV;
239 #endif
240 #if defined(ENABLE_STATISTICS)
241 extern FILE *opt_StatisticsLogfile;
242 extern bool opt_StatisticsCSV;
243 #endif
245 extern int opt_TraceTraps;
246 
247 
248 /* function prototypes ********************************************************/
249 
250 int options_get(opt_struct *opts, JavaVMInitArgs *vm_args);
251 void options_xx(JavaVMInitArgs *vm_args);
252 
253 
254 /* debug **********************************************************************/
255 
256 #if !defined(NDEBUG)
257 # define TRACESUBSYSTEMINITIALIZATION(text) \
258  do { \
259  if (opt_TraceSubsystemInitialization) { \
260  log_println("[Initializing subsystem: %s]", text); \
261  } \
262  } while (0)
263 #else
264 # define TRACESUBSYSTEMINITIALIZATION(text)
265 #endif
266 
267 #endif // OPTIONS_HPP_
268 
269 
270 /*
271  * These are local overrides for various environment variables in Emacs.
272  * Please do not remove this and leave it at the end of the file, where
273  * Emacs will automagically detect them.
274  * ---------------------------------------------------------------------
275  * Local variables:
276  * mode: c++
277  * indent-tabs-mode: t
278  * c-basic-offset: 4
279  * tab-width: 4
280  * End:
281  * vim:noexpandtab:sw=4:ts=4:
282  */
bool opt_foo
Definition: options.cpp:49
char * opt_arg
Definition: options.cpp:47
bool opt_showdisassemble
Definition: options.cpp:85
bool opt_AlwaysMmapFirstPage
Definition: options.cpp:164
int opt_DebugStackTrace
Definition: options.cpp:174
int opt_ProfileGCMemoryUsage
Definition: options.cpp:199
int opt_ProfileMemoryUsage
Definition: options.cpp:200
int opt_TraceJavaCalls
Definition: options.cpp:215
const char * name
Definition: options.hpp:60
bool opt_intrp
Definition: options.cpp:55
int opt_TraceJVMCallsVerbose
Definition: options.cpp:219
bool initverbose
Definition: options.cpp:71
s4 opt_heapstartsize
Definition: options.cpp:64
int64_t opt_MaxDirectMemorySize
Definition: options.cpp:156
char * opt_CompileSignature
Definition: options.cpp:167
int opt_PermSize
Definition: options.cpp:158
bool opt_TraceJMMCalls
Definition: options.cpp:216
bool opt_verbosecall
Definition: options.cpp:76
char * opt_CompileMethod
Definition: options.cpp:166
int value
Definition: options.hpp:61
int opt_DebugPackage
Definition: options.cpp:170
bool arg
Definition: options.hpp:52
int opt_DebugThreads
Definition: options.cpp:175
const char * opt_filter_show_method
Definition: options.cpp:145
s4 opt_heapmaxsize
Definition: options.cpp:63
bool opt_ifconv
Definition: options.cpp:118
const char * opt_filter_verbosecall_exclude
Definition: options.cpp:144
opt_struct opts[]
Definition: vm.cpp:243
const char * doc
Definition: options.hpp:63
bool opt_debugcolor
Definition: options.cpp:68
int opt_TraceBuiltinCalls
Definition: options.cpp:208
int opt_TraceCompilerCalls
Definition: options.cpp:209
void options_xx(JavaVMInitArgs *vm_args)
Definition: options.cpp:553
bool opt_showddatasegment
Definition: options.cpp:86
bool opt_verbosejni
Definition: options.cpp:75
bool compileverbose
Definition: options.cpp:82
bool checkbounds
Definition: options.cpp:89
int opt_DebugLocalReferences
Definition: options.cpp:168
bool checksync
Definition: options.cpp:90
int opt_TraceExceptions
Definition: options.cpp:210
int opt_TraceTraps
Definition: options.cpp:233
FILE * opt_ProfileMemoryUsageGNUPlot
Definition: options.cpp:201
bool showmethods
Definition: options.cpp:78
bool opt_verbosegc
Definition: options.cpp:74
int32_t s4
Definition: types.hpp:45
int value
Definition: options.hpp:53
s4 opt_index
Definition: options.cpp:46
int opt_DebugPatcher
Definition: options.cpp:171
int opt_PrintConfig
Definition: options.cpp:197
int type
Definition: options.hpp:62
int opt_TraceLinkClass
Definition: options.cpp:231
bool opt_verify
Definition: options.cpp:103
int options_get(opt_struct *opts, JavaVMInitArgs *vm_args)
Definition: options.cpp:401
int opt_TraceJNICalls
Definition: options.cpp:217
bool opt_verboseclass
Definition: options.cpp:73
bool opt_jar
Definition: options.cpp:51
s4 opt_stacksize
Definition: options.cpp:65
int opt_TraceJVMCalls
Definition: options.cpp:218
bool opt_showintermediate
Definition: options.cpp:87
int opt_PrintWarnings
Definition: options.cpp:198
int opt_TraceHPI
Definition: options.cpp:211
bool opt_jit
Definition: options.cpp:54
bool makeinitializations
Definition: options.cpp:95
int opt_TraceSubsystemInitialization
Definition: options.cpp:232
bool showutf
Definition: options.cpp:80
int opt_CompileAll
Definition: options.cpp:165
bool opt_run
Definition: options.cpp:61
int opt_DebugLocks
Definition: options.cpp:169
int opt_MaxPermSize
Definition: options.cpp:157
bool showconstantpool
Definition: options.cpp:79
bool loadverbose
Definition: options.cpp:70
bool showstack
Definition: options.cpp:83
const char * name
Definition: options.hpp:51
int opt_ThreadStackSize
Definition: options.cpp:159
const char * opt_filter_verbosecall_include
Definition: options.cpp:143
int opt_RegallocSpillAll
Definition: options.cpp:202
bool opt_AlwaysEmitLongBranches
Definition: options.cpp:163
int opt_DebugStackFrameInfo
Definition: options.cpp:173
bool opt_verbose
Definition: options.cpp:67