The data contained in this repository can be downloaded to your computer using one of several clients.
Please see the documentation of your version control software client for more information.

Please select the desired protocol below to get the URL.

This URL has Read-Only access.

Statistics
| Branch: | Revision:

main_repo / deps / v8 / src / flag-definitions.h @ 40c0f755

History | View | Annotate | Download (14.2 KB)

1
// Copyright 2008 the V8 project authors. All rights reserved.
2
// Redistribution and use in source and binary forms, with or without
3
// modification, are permitted provided that the following conditions are
4
// met:
5
//
6
//     * Redistributions of source code must retain the above copyright
7
//       notice, this list of conditions and the following disclaimer.
8
//     * Redistributions in binary form must reproduce the above
9
//       copyright notice, this list of conditions and the following
10
//       disclaimer in the documentation and/or other materials provided
11
//       with the distribution.
12
//     * Neither the name of Google Inc. nor the names of its
13
//       contributors may be used to endorse or promote products derived
14
//       from this software without specific prior written permission.
15
//
16
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27

    
28
// This file defines all of the flags.  It is separated into different section,
29
// for Debug, Release, Logging and Profiling, etc.  To add a new flag, find the
30
// correct section, and use one of the DEFINE_ macros, without a trailing ';'.
31
//
32
// This include does not have a guard, because it is a template-style include,
33
// which can be included multiple times in different modes.  It expects to have
34
// a mode defined before it's included.  The modes are FLAG_MODE_... below:
35

    
36
// We want to declare the names of the variables for the header file.  Normally
37
// this will just be an extern declaration, but for a readonly flag we let the
38
// compiler make better optimizations by giving it the value.
39
#if defined(FLAG_MODE_DECLARE)
40
#define FLAG_FULL(ftype, ctype, nam, def, cmt) \
41
  extern ctype FLAG_##nam;
42
#define FLAG_READONLY(ftype, ctype, nam, def, cmt) \
43
  static ctype const FLAG_##nam = def;
44

    
45
// We want to supply the actual storage and value for the flag variable in the
46
// .cc file.  We only do this for writable flags.
47
#elif defined(FLAG_MODE_DEFINE)
48
#define FLAG_FULL(ftype, ctype, nam, def, cmt) \
49
  ctype FLAG_##nam = def;
50
#define FLAG_READONLY(ftype, ctype, nam, def, cmt)
51

    
52
// We need to define all of our default values so that the Flag structure can
53
// access them by pointer.  These are just used internally inside of one .cc,
54
// for MODE_META, so there is no impact on the flags interface.
55
#elif defined(FLAG_MODE_DEFINE_DEFAULTS)
56
#define FLAG_FULL(ftype, ctype, nam, def, cmt) \
57
  static ctype const FLAGDEFAULT_##nam = def;
58
#define FLAG_READONLY(ftype, ctype, nam, def, cmt)
59

    
60

    
61
// We want to write entries into our meta data table, for internal parsing and
62
// printing / etc in the flag parser code.  We only do this for writable flags.
63
#elif defined(FLAG_MODE_META)
64
#define FLAG_FULL(ftype, ctype, nam, def, cmt) \
65
  { Flag::TYPE_##ftype, #nam, &FLAG_##nam, &FLAGDEFAULT_##nam, cmt, false },
66
#define FLAG_READONLY(ftype, ctype, nam, def, cmt)
67

    
68
#else
69
#error No mode supplied when including flags.defs
70
#endif
71

    
72
#ifdef FLAG_MODE_DECLARE
73
// Structure used to hold a collection of arguments to the JavaScript code.
74
struct JSArguments {
75
public:
76
  JSArguments();
77
  JSArguments(int argc, const char** argv);
78
  int argc() const;
79
  const char** argv();
80
  const char*& operator[](int idx);
81
  JSArguments& operator=(JSArguments args);
82
private:
83
  int argc_;
84
  const char** argv_;
85
};
86
#endif
87

    
88
#define DEFINE_bool(nam, def, cmt) FLAG(BOOL, bool, nam, def, cmt)
89
#define DEFINE_int(nam, def, cmt) FLAG(INT, int, nam, def, cmt)
90
#define DEFINE_float(nam, def, cmt) FLAG(FLOAT, double, nam, def, cmt)
91
#define DEFINE_string(nam, def, cmt) FLAG(STRING, const char*, nam, def, cmt)
92
#define DEFINE_args(nam, def, cmt) FLAG(ARGS, JSArguments, nam, def, cmt)
93

    
94
//
95
// Flags in all modes.
96
//
97
#define FLAG FLAG_FULL
98

    
99
// assembler-ia32.cc / assembler-arm.cc
100
DEFINE_bool(debug_code, false,
101
            "generate extra code (comments, assertions) for debugging")
102
DEFINE_bool(emit_branch_hints, false, "emit branch hints")
103
DEFINE_bool(push_pop_elimination, true,
104
            "eliminate redundant push/pops in assembly code")
105
DEFINE_bool(print_push_pop_elimination, false,
106
            "print elimination of redundant push/pops in assembly code")
107

    
108
// bootstrapper.cc
109
DEFINE_string(expose_natives_as, NULL, "expose natives in global object")
110
DEFINE_string(expose_debug_as, NULL, "expose debug in global object")
111
DEFINE_string(natives_file, NULL, "alternative natives file")
112
DEFINE_bool(expose_gc, false, "expose gc extension")
113

    
114
// builtins-ia32.cc
115
DEFINE_bool(inline_new, true, "use fast inline allocation")
116

    
117
// checks.cc
118
DEFINE_bool(stack_trace_on_abort, true,
119
            "print a stack trace if an assertion failure occurs")
120

    
121
// codegen-ia32.cc / codegen-arm.cc
122
DEFINE_bool(trace, false, "trace function calls")
123
DEFINE_bool(defer_negation, true, "defer negation operation")
124
DEFINE_bool(check_stack, true,
125
            "check stack for overflow, interrupt, breakpoint")
126

    
127
// codegen.cc
128
DEFINE_bool(lazy, true, "use lazy compilation")
129
DEFINE_bool(debug_info, true, "add debug information to compiled functions")
130

    
131
// compiler.cc
132
DEFINE_bool(strict, false, "strict error checking")
133
DEFINE_int(min_preparse_length, 1024,
134
           "Minimum length for automatic enable preparsing")
135

    
136
// debug.cc
137
DEFINE_bool(remote_debugging, false, "enable remote debugging")
138
DEFINE_bool(trace_debug_json, false, "trace debugging JSON request/response")
139
DEFINE_bool(debugger_auto_break, false,
140
            "automatically set the debug break flag when debugger commands are "
141
            "in the queue (experimental)")
142

    
143
// execution.cc
144
DEFINE_bool(call_regexp, false, "allow calls to RegExp objects")
145

    
146
// frames.cc
147
DEFINE_int(max_stack_trace_source_length, 300,
148
           "maximum length of function source code printed in a stack trace.")
149

    
150
// heap.cc
151
DEFINE_int(new_space_size, 0, "size of (each semispace in) the new generation")
152
DEFINE_int(old_space_size, 0, "size of the old generation")
153
DEFINE_bool(gc_global, false, "always perform global GCs")
154
DEFINE_int(gc_interval, -1, "garbage collect after <n> allocations")
155
DEFINE_bool(trace_gc, false,
156
            "print one trace line following each garbage collection")
157
DEFINE_bool(collect_maps, true,
158
            "garbage collect maps from which no objects can be reached")
159

    
160
// ic.cc
161
DEFINE_bool(use_ic, true, "use inline caching")
162

    
163
// macro-assembler-ia32.cc
164
DEFINE_bool(native_code_counters, false,
165
            "generate extra code for manipulating stats counters")
166

    
167
// mark-compact.cc
168
DEFINE_bool(always_compact, false, "Perform compaction on every full GC")
169
DEFINE_bool(never_compact, false,
170
            "Never perform compaction on full GC - testing only")
171
DEFINE_bool(cleanup_ics_at_gc, true,
172
            "Flush inline caches prior to mark compact collection.")
173
DEFINE_bool(cleanup_caches_in_maps_at_gc, true,
174
            "Flush code caches in maps during mark compact cycle.")
175

    
176
DEFINE_bool(canonicalize_object_literal_maps, true,
177
            "Canonicalize maps for object literals.")
178

    
179
// mksnapshot.cc
180
DEFINE_bool(h, false, "print this message")
181

    
182
// parser.cc
183
DEFINE_bool(allow_natives_syntax, false, "allow natives syntax")
184

    
185
// rewriter.cc
186
DEFINE_bool(optimize_ast, true, "optimize the ast")
187

    
188
// simulator-arm.cc
189
DEFINE_bool(trace_sim, false, "trace simulator execution")
190
DEFINE_int(stop_sim_at, 0, "Simulator stop after x number of instructions")
191

    
192
// top.cc
193
DEFINE_bool(trace_exception, false,
194
            "print stack trace when throwing exceptions")
195
DEFINE_bool(preallocate_message_memory, false,
196
            "preallocate some memory to build stack traces.")
197

    
198
// usage-analyzer.cc
199
DEFINE_bool(usage_computation, true, "compute variable usage counts")
200

    
201
// v8.cc
202
DEFINE_bool(preemption, false,
203
            "activate a 100ms timer that switches between V8 threads")
204

    
205
// Regexp
206
DEFINE_bool(trace_regexps, false, "trace regexp execution")
207
DEFINE_bool(regexp_native, true,
208
            "use native code regexp implementation (IA32 only)")
209
DEFINE_bool(regexp_optimization, true, "generate optimized regexp code")
210

    
211
// Testing flags test/cctest/test-{flags,api,serialization}.cc
212
DEFINE_bool(testing_bool_flag, true, "testing_bool_flag")
213
DEFINE_int(testing_int_flag, 13, "testing_int_flag")
214
DEFINE_float(testing_float_flag, 2.5, "float-flag")
215
DEFINE_string(testing_string_flag, "Hello, world!", "string-flag")
216
DEFINE_int(testing_prng_seed, 42, "Seed used for threading test randomness")
217
#ifdef WIN32
218
DEFINE_string(testing_serialization_file, "C:\\Windows\\Temp\\serdes",
219
              "file in which to testing_serialize heap")
220
#else
221
DEFINE_string(testing_serialization_file, "/tmp/serdes",
222
              "file in which to serialize heap")
223
#endif
224

    
225
//
226
// Dev shell flags
227
//
228

    
229
DEFINE_bool(help, false, "Print usage message, including flags, on console")
230
DEFINE_bool(dump_counters, false, "Dump counters on exit")
231
DEFINE_bool(debugger, true, "Enable JavaScript debugger")
232
DEFINE_bool(remote_debugger, false, "Connect JavaScript debugger to the "
233
                                    "debugger agent in another process")
234
DEFINE_bool(debugger_agent, false, "Enable debugger agent")
235
DEFINE_int(debugger_port, 5858, "Port to use for remote debugging")
236
DEFINE_string(map_counters, false, "Map counters to a file")
237
DEFINE_args(js_arguments, JSArguments(),
238
            "Pass all remaining arguments to the script. Alias for \"--\".")
239

    
240
//
241
// Debug only flags
242
//
243
#undef FLAG
244
#ifdef DEBUG
245
#define FLAG FLAG_FULL
246
#else
247
#define FLAG FLAG_READONLY
248
#endif
249

    
250
// checks.cc
251
DEFINE_bool(enable_slow_asserts, false,
252
            "enable asserts that are slow to execute")
253

    
254
// codegen-ia32.cc / codegen-arm.cc
255
DEFINE_bool(trace_codegen, false,
256
            "print name of functions for which code is generated")
257
DEFINE_bool(print_source, false, "pretty print source code")
258
DEFINE_bool(print_builtin_source, false,
259
            "pretty print source code for builtins")
260
DEFINE_bool(print_ast, false, "print source AST")
261
DEFINE_bool(print_builtin_ast, false, "print source AST for builtins")
262
DEFINE_bool(trace_calls, false, "trace calls")
263
DEFINE_bool(trace_builtin_calls, false, "trace builtins calls")
264
DEFINE_string(stop_at, "", "function name where to insert a breakpoint")
265

    
266
// compiler.cc
267
DEFINE_bool(print_builtin_scopes, false, "print scopes for builtins")
268
DEFINE_bool(print_scopes, false, "print scopes")
269

    
270
// contexts.cc
271
DEFINE_bool(trace_contexts, false, "trace contexts operations")
272

    
273
// heap.cc
274
DEFINE_bool(gc_greedy, false, "perform GC prior to some allocations")
275
DEFINE_bool(gc_verbose, false, "print stuff during garbage collection")
276
DEFINE_bool(heap_stats, false, "report heap statistics before and after GC")
277
DEFINE_bool(code_stats, false, "report code statistics after GC")
278
DEFINE_bool(verify_heap, false, "verify heap pointers before and after GC")
279
DEFINE_bool(print_handles, false, "report handles after GC")
280
DEFINE_bool(print_global_handles, false, "report global handles after GC")
281
DEFINE_bool(print_rset, false, "print remembered sets before GC")
282

    
283
// ic.cc
284
DEFINE_bool(trace_ic, false, "trace inline cache state transitions")
285

    
286
// objects.cc
287
DEFINE_bool(trace_normalization,
288
            false,
289
            "prints when objects are turned into dictionaries.")
290

    
291
// runtime.cc
292
DEFINE_bool(trace_lazy, false, "trace lazy compilation")
293

    
294
// serialize.cc
295
DEFINE_bool(debug_serialization, false,
296
            "write debug information into the snapshot.")
297

    
298
// spaces.cc
299
DEFINE_bool(collect_heap_spill_statistics, false,
300
            "report heap spill statistics along with heap_stats "
301
            "(requires heap_stats)")
302

    
303
// Regexp
304
DEFINE_bool(trace_regexp_bytecodes, false, "trace regexp bytecode execution")
305
DEFINE_bool(trace_regexp_assembler,
306
            false,
307
            "trace regexp macro assembler calls.")
308

    
309
//
310
// Logging and profiling only flags
311
//
312
#undef FLAG
313
#ifdef ENABLE_LOGGING_AND_PROFILING
314
#define FLAG FLAG_FULL
315
#else
316
#define FLAG FLAG_READONLY
317
#endif
318

    
319
// log.cc
320
DEFINE_bool(log, false,
321
            "Minimal logging (no API, code, GC, suspect, or handles samples).")
322
DEFINE_bool(log_all, false, "Log all events to the log file.")
323
DEFINE_bool(log_runtime, false, "Activate runtime system %Log call.")
324
DEFINE_bool(log_api, false, "Log API events to the log file.")
325
DEFINE_bool(log_code, false,
326
            "Log code events to the log file without profiling.")
327
DEFINE_bool(log_gc, false,
328
            "Log heap samples on garbage collection for the hp2ps tool.")
329
DEFINE_bool(log_handles, false, "Log global handle events.")
330
DEFINE_bool(log_state_changes, false, "Log state changes.")
331
DEFINE_bool(log_suspect, false, "Log suspect operations.")
332
DEFINE_bool(prof, false,
333
            "Log statistical profiling information (implies --log-code).")
334
DEFINE_bool(prof_auto, true,
335
            "Used with --prof, starts profiling automatically")
336
DEFINE_bool(log_regexp, false, "Log regular expression execution.")
337
DEFINE_bool(sliding_state_window, false,
338
            "Update sliding state window counters.")
339
DEFINE_string(logfile, "v8.log", "Specify the name of the log file.")
340
DEFINE_bool(oprofile, false, "Enable JIT agent for OProfile.")
341

    
342
//
343
// Heap protection flags
344
// Using heap protection requires ENABLE_LOGGING_AND_PROFILING as well.
345
//
346
#ifdef ENABLE_HEAP_PROTECTION
347
#undef FLAG
348
#define FLAG FLAG_FULL
349

    
350
DEFINE_bool(protect_heap, false,
351
            "Protect/unprotect V8's heap when leaving/entring the VM.")
352

    
353
#endif
354

    
355
//
356
// Disassembler only flags
357
//
358
#undef FLAG
359
#ifdef ENABLE_DISASSEMBLER
360
#define FLAG FLAG_FULL
361
#else
362
#define FLAG FLAG_READONLY
363
#endif
364

    
365
// code-stubs.cc
366
DEFINE_bool(print_code_stubs, false, "print code stubs")
367

    
368
// codegen-ia32.cc / codegen-arm.cc
369
DEFINE_bool(print_code, false, "print generated code")
370
DEFINE_bool(print_builtin_code, false, "print generated code for builtins")
371

    
372
// Cleanup...
373
#undef FLAG_FULL
374
#undef FLAG_READONLY
375
#undef FLAG
376

    
377
#undef DEFINE_bool
378
#undef DEFINE_int
379
#undef DEFINE_string
380

    
381
#undef FLAG_MODE_DECLARE
382
#undef FLAG_MODE_DEFINE
383
#undef FLAG_MODE_DEFINE_DEFAULTS
384
#undef FLAG_MODE_META