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_REPLACEMENT)
216 extern int opt_TestReplacement;
217 #endif
218 extern int opt_TraceBuiltinCalls;
219 extern int opt_TraceCompilerCalls;
220 extern int opt_TraceExceptions;
221 extern int opt_TraceHPI;
222 #if defined(ENABLE_INLINING) && !defined(NDEBUG)
223 extern int opt_TraceInlining;
224 #endif
225 extern int opt_TraceJavaCalls;
226 extern bool opt_TraceJMMCalls;
227 extern int opt_TraceJNICalls;
228 extern int opt_TraceJVMCalls;
229 extern int opt_TraceJVMCallsVerbose;
230 #if defined(ENABLE_JVMTI)
231 extern int opt_TraceJVMTICalls;
232 #endif
233 extern int opt_TraceLinkClass;
234 #if defined(ENABLE_RT_TIMING)
235 extern FILE *opt_RtTimingLogfile;
236 extern bool opt_RtTimingCSV;
237 #endif
238 #if defined(ENABLE_STATISTICS)
239 extern FILE *opt_StatisticsLogfile;
240 extern bool opt_StatisticsCSV;
241 #endif
242 #if defined(ENABLE_REPLACEMENT)
243 extern int opt_TraceReplacement;
244 #endif
246 extern int opt_TraceTraps;
247 
248 
249 /* function prototypes ********************************************************/
250 
251 int options_get(opt_struct *opts, JavaVMInitArgs *vm_args);
252 void options_xx(JavaVMInitArgs *vm_args);
253 
254 
255 /* debug **********************************************************************/
256 
257 #if !defined(NDEBUG)
258 # define TRACESUBSYSTEMINITIALIZATION(text) \
259  do { \
260  if (opt_TraceSubsystemInitialization) { \
261  log_println("[Initializing subsystem: %s]", text); \
262  } \
263  } while (0)
264 #else
265 # define TRACESUBSYSTEMINITIALIZATION(text)
266 #endif
267 
268 #endif // OPTIONS_HPP_
269 
270 
271 /*
272  * These are local overrides for various environment variables in Emacs.
273  * Please do not remove this and leave it at the end of the file, where
274  * Emacs will automagically detect them.
275  * ---------------------------------------------------------------------
276  * Local variables:
277  * mode: c++
278  * indent-tabs-mode: t
279  * c-basic-offset: 4
280  * tab-width: 4
281  * End:
282  * vim:noexpandtab:sw=4:ts=4:
283  */
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:213
const char * name
Definition: options.hpp:60
bool opt_intrp
Definition: options.cpp:55
int opt_TraceJVMCallsVerbose
Definition: options.cpp:217
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:214
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:206
int opt_TraceCompilerCalls
Definition: options.cpp:207
void options_xx(JavaVMInitArgs *vm_args)
Definition: options.cpp:552
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:208
int opt_TraceTraps
Definition: options.cpp:234
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:229
bool opt_verify
Definition: options.cpp:103
int options_get(opt_struct *opts, JavaVMInitArgs *vm_args)
Definition: options.cpp:400
int opt_TraceJNICalls
Definition: options.cpp:215
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:216
bool opt_showintermediate
Definition: options.cpp:87
int opt_PrintWarnings
Definition: options.cpp:198
int opt_TraceHPI
Definition: options.cpp:209
bool opt_jit
Definition: options.cpp:54
bool makeinitializations
Definition: options.cpp:95
int opt_TraceSubsystemInitialization
Definition: options.cpp:233
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