v8  3.11.10(node0.8.26)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
flag-definitions.h
Go to the documentation of this file.
1 // Copyright 2012 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 #define DEFINE_implication(whenflag, thenflag)
45 
46 // We want to supply the actual storage and value for the flag variable in the
47 // .cc file. We only do this for writable flags.
48 #elif defined(FLAG_MODE_DEFINE)
49 #define FLAG_FULL(ftype, ctype, nam, def, cmt) \
50  ctype FLAG_##nam = def;
51 #define FLAG_READONLY(ftype, ctype, nam, def, cmt)
52 #define DEFINE_implication(whenflag, thenflag)
53 
54 // We need to define all of our default values so that the Flag structure can
55 // access them by pointer. These are just used internally inside of one .cc,
56 // for MODE_META, so there is no impact on the flags interface.
57 #elif defined(FLAG_MODE_DEFINE_DEFAULTS)
58 #define FLAG_FULL(ftype, ctype, nam, def, cmt) \
59  static ctype const FLAGDEFAULT_##nam = def;
60 #define FLAG_READONLY(ftype, ctype, nam, def, cmt)
61 #define DEFINE_implication(whenflag, thenflag)
62 
63 // We want to write entries into our meta data table, for internal parsing and
64 // printing / etc in the flag parser code. We only do this for writable flags.
65 #elif defined(FLAG_MODE_META)
66 #define FLAG_FULL(ftype, ctype, nam, def, cmt) \
67  { Flag::TYPE_##ftype, #nam, &FLAG_##nam, &FLAGDEFAULT_##nam, cmt, false },
68 #define FLAG_READONLY(ftype, ctype, nam, def, cmt)
69 #define DEFINE_implication(whenflag, thenflag)
70 
71 // We produce the code to set flags when it is implied by another flag.
72 #elif defined(FLAG_MODE_DEFINE_IMPLICATIONS)
73 #define FLAG_FULL(ftype, ctype, nam, def, cmt)
74 #define FLAG_READONLY(ftype, ctype, nam, def, cmt)
75 #define DEFINE_implication(whenflag, thenflag) \
76  if (FLAG_##whenflag) FLAG_##thenflag = true;
77 
78 #else
79 #error No mode supplied when including flags.defs
80 #endif
81 
82 #ifdef FLAG_MODE_DECLARE
83 // Structure used to hold a collection of arguments to the JavaScript code.
84 #define JSARGUMENTS_INIT {{}}
85 struct JSArguments {
86 public:
87  inline int argc() const {
88  return static_cast<int>(storage_[0]);
89  }
90  inline const char** argv() const {
91  return reinterpret_cast<const char**>(storage_[1]);
92  }
93  inline const char*& operator[] (int idx) const {
94  return argv()[idx];
95  }
96  inline JSArguments& operator=(JSArguments args) {
97  set_argc(args.argc());
98  set_argv(args.argv());
99  return *this;
100  }
101  static JSArguments Create(int argc, const char** argv) {
102  JSArguments args;
103  args.set_argc(argc);
104  args.set_argv(argv);
105  return args;
106  }
107 private:
108  void set_argc(int argc) {
109  storage_[0] = argc;
110  }
111  void set_argv(const char** argv) {
112  storage_[1] = reinterpret_cast<AtomicWord>(argv);
113  }
114 public:
115  // Contains argc and argv. Unfortunately we have to store these two fields
116  // into a single one to avoid making the initialization macro (which would be
117  // "{ 0, NULL }") contain a coma.
118  AtomicWord storage_[2];
119 };
120 #endif
121 
122 #define DEFINE_bool(nam, def, cmt) FLAG(BOOL, bool, nam, def, cmt)
123 #define DEFINE_int(nam, def, cmt) FLAG(INT, int, nam, def, cmt)
124 #define DEFINE_float(nam, def, cmt) FLAG(FLOAT, double, nam, def, cmt)
125 #define DEFINE_string(nam, def, cmt) FLAG(STRING, const char*, nam, def, cmt)
126 #define DEFINE_args(nam, def, cmt) FLAG(ARGS, JSArguments, nam, def, cmt)
127 
128 //
129 // Flags in all modes.
130 //
131 #define FLAG FLAG_FULL
132 
133 // Flags for language modes and experimental language features.
134 DEFINE_bool(use_strict, false, "enforce strict mode")
135 DEFINE_bool(es5_readonly, false,
136  "activate correct semantics for inheriting readonliness")
137 DEFINE_bool(es52_globals, false,
138  "activate new semantics for global var declarations")
139 
140 DEFINE_bool(harmony_typeof, false, "enable harmony semantics for typeof")
141 DEFINE_bool(harmony_scoping, false, "enable harmony block scoping")
142 DEFINE_bool(harmony_modules, false,
143  "enable harmony modules (implies block scoping)")
144 DEFINE_bool(harmony_proxies, false, "enable harmony proxies")
145 DEFINE_bool(harmony_collections, false,
146  "enable harmony collections (sets, maps, and weak maps)")
147 DEFINE_bool(harmony, false, "enable all harmony features (except typeof)")
148 DEFINE_implication(harmony, harmony_scoping)
149 DEFINE_implication(harmony, harmony_modules)
150 DEFINE_implication(harmony, harmony_proxies)
151 DEFINE_implication(harmony, harmony_collections)
152 DEFINE_implication(harmony_modules, harmony_scoping)
153 
154 // Flags for experimental implementation features.
155 DEFINE_bool(packed_arrays, false, "optimizes arrays that have no holes")
156 DEFINE_bool(smi_only_arrays, true, "tracks arrays with only smi values")
157 DEFINE_bool(clever_optimizations,
158  true,
159  "Optimize object size, Array shift, DOM strings and string +")
160 
161 // Flags for data representation optimizations
162 DEFINE_bool(unbox_double_arrays, true, "automatically unbox arrays of doubles")
163 DEFINE_bool(string_slices, true, "use string slices")
164 
165 // Flags for Crankshaft.
166 DEFINE_bool(crankshaft, true, "use crankshaft")
167 DEFINE_string(hydrogen_filter, "", "optimization filter")
168 DEFINE_bool(use_range, true, "use hydrogen range analysis")
169 DEFINE_bool(eliminate_dead_phis, true, "eliminate dead phis")
170 DEFINE_bool(use_gvn, true, "use hydrogen global value numbering")
171 DEFINE_bool(use_canonicalizing, true, "use hydrogen instruction canonicalizing")
172 DEFINE_bool(use_inlining, true, "use function inlining")
173 DEFINE_int(max_inlined_source_size, 600,
174  "maximum source size in bytes considered for a single inlining")
175 DEFINE_int(max_inlined_nodes, 196,
176  "maximum number of AST nodes considered for a single inlining")
177 DEFINE_int(max_inlined_nodes_cumulative, 196,
178  "maximum cumulative number of AST nodes considered for inlining")
179 DEFINE_bool(loop_invariant_code_motion, true, "loop invariant code motion")
180 DEFINE_bool(collect_megamorphic_maps_from_stub_cache,
181  true,
182  "crankshaft harvests type feedback from stub cache")
183 DEFINE_bool(hydrogen_stats, false, "print statistics for hydrogen")
184 DEFINE_bool(trace_hydrogen, false, "trace generated hydrogen to file")
185 DEFINE_string(trace_phase, "Z", "trace generated IR for specified phases")
186 DEFINE_bool(trace_inlining, false, "trace inlining decisions")
187 DEFINE_bool(trace_alloc, false, "trace register allocator")
188 DEFINE_bool(trace_all_uses, false, "trace all use positions")
189 DEFINE_bool(trace_range, false, "trace range analysis")
190 DEFINE_bool(trace_gvn, false, "trace global value numbering")
191 DEFINE_bool(trace_representation, false, "trace representation types")
192 DEFINE_bool(stress_pointer_maps, false, "pointer map for every instruction")
193 DEFINE_bool(stress_environments, false, "environment for every instruction")
194 DEFINE_int(deopt_every_n_times,
195  0,
196  "deoptimize every n times a deopt point is passed")
197 DEFINE_bool(trap_on_deopt, false, "put a break point before deoptimizing")
198 DEFINE_bool(deoptimize_uncommon_cases, true, "deoptimize uncommon cases")
199 DEFINE_bool(polymorphic_inlining, true, "polymorphic inlining")
200 DEFINE_bool(use_osr, true, "use on-stack replacement")
201 DEFINE_bool(array_bounds_checks_elimination, false,
202  "perform array bounds checks elimination")
203 DEFINE_bool(array_index_dehoisting, false,
204  "perform array index dehoisting")
205 
206 DEFINE_bool(trace_osr, false, "trace on-stack replacement")
207 DEFINE_int(stress_runs, 0, "number of stress runs")
208 DEFINE_bool(optimize_closures, true, "optimize closures")
209 DEFINE_bool(inline_construct, true, "inline constructor calls")
210 DEFINE_bool(inline_arguments, true, "inline functions with arguments object")
211 DEFINE_int(loop_weight, 1, "loop weight for representation inference")
212 
213 DEFINE_bool(optimize_for_in, true,
214  "optimize functions containing for-in loops")
215 
216 // Experimental profiler changes.
217 DEFINE_bool(experimental_profiler, true, "enable all profiler experiments")
218 DEFINE_bool(watch_ic_patching, false, "profiler considers IC stability")
219 DEFINE_int(frame_count, 1, "number of stack frames inspected by the profiler")
220 DEFINE_bool(self_optimization, false,
221  "primitive functions trigger their own optimization")
222 DEFINE_bool(direct_self_opt, false,
223  "call recompile stub directly when self-optimizing")
224 DEFINE_bool(retry_self_opt, false, "re-try self-optimization if it failed")
225 DEFINE_bool(count_based_interrupts, false,
226  "trigger profiler ticks based on counting instead of timing")
227 DEFINE_bool(interrupt_at_exit, false,
228  "insert an interrupt check at function exit")
229 DEFINE_bool(weighted_back_edges, false,
230  "weight back edges by jump distance for interrupt triggering")
231 DEFINE_int(interrupt_budget, 5900,
232  "execution budget before interrupt is triggered")
233 DEFINE_int(type_info_threshold, 15,
234  "percentage of ICs that must have type info to allow optimization")
235 DEFINE_int(self_opt_count, 130, "call count before self-optimization")
236 
237 DEFINE_implication(experimental_profiler, watch_ic_patching)
238 DEFINE_implication(experimental_profiler, self_optimization)
239 // Not implying direct_self_opt here because it seems to be a bad idea.
240 DEFINE_implication(experimental_profiler, retry_self_opt)
241 DEFINE_implication(experimental_profiler, count_based_interrupts)
242 DEFINE_implication(experimental_profiler, interrupt_at_exit)
243 DEFINE_implication(experimental_profiler, weighted_back_edges)
244 
245 DEFINE_bool(trace_opt_verbose, false, "extra verbose compilation tracing")
246 DEFINE_implication(trace_opt_verbose, trace_opt)
247 
248 // assembler-ia32.cc / assembler-arm.cc / assembler-x64.cc
249 DEFINE_bool(debug_code, false,
250  "generate extra code (assertions) for debugging")
251 DEFINE_bool(code_comments, false, "emit comments in code disassembly")
252 DEFINE_bool(enable_sse2, true,
253  "enable use of SSE2 instructions if available")
254 DEFINE_bool(enable_sse3, true,
255  "enable use of SSE3 instructions if available")
256 DEFINE_bool(enable_sse4_1, true,
257  "enable use of SSE4.1 instructions if available")
258 DEFINE_bool(enable_cmov, true,
259  "enable use of CMOV instruction if available")
260 DEFINE_bool(enable_rdtsc, true,
261  "enable use of RDTSC instruction if available")
262 DEFINE_bool(enable_sahf, true,
263  "enable use of SAHF instruction if available (X64 only)")
264 DEFINE_bool(enable_vfp3, true,
265  "enable use of VFP3 instructions if available - this implies "
266  "enabling ARMv7 instructions (ARM only)")
267 DEFINE_bool(enable_armv7, true,
268  "enable use of ARMv7 instructions if available (ARM only)")
269 DEFINE_bool(enable_fpu, true,
270  "enable use of MIPS FPU instructions if available (MIPS only)")
271 
272 // bootstrapper.cc
273 DEFINE_string(expose_natives_as, NULL, "expose natives in global object")
274 DEFINE_string(expose_debug_as, NULL, "expose debug in global object")
275 DEFINE_bool(expose_gc, false, "expose gc extension")
276 DEFINE_bool(expose_externalize_string, false,
277  "expose externalize string extension")
278 DEFINE_int(stack_trace_limit, 10, "number of stack frames to capture")
279 DEFINE_bool(builtins_in_stack_traces, false,
280  "show built-in functions in stack traces")
281 DEFINE_bool(disable_native_files, false, "disable builtin natives files")
282 
283 // builtins-ia32.cc
284 DEFINE_bool(inline_new, true, "use fast inline allocation")
285 
286 // checks.cc
287 DEFINE_bool(stack_trace_on_abort, true,
288  "print a stack trace if an assertion failure occurs")
289 
290 // codegen-ia32.cc / codegen-arm.cc
291 DEFINE_bool(trace, false, "trace function calls")
292 DEFINE_bool(mask_constants_with_cookie,
293  true,
294  "use random jit cookie to mask large constants")
295 
296 // codegen.cc
297 DEFINE_bool(lazy, true, "use lazy compilation")
298 DEFINE_bool(trace_opt, false, "trace lazy optimization")
299 DEFINE_bool(trace_opt_stats, false, "trace lazy optimization statistics")
300 DEFINE_bool(opt, true, "use adaptive optimizations")
301 DEFINE_bool(always_opt, false, "always try to optimize functions")
302 DEFINE_bool(prepare_always_opt, false, "prepare for turning on always opt")
303 DEFINE_bool(trace_deopt, false, "trace deoptimization")
304 
305 // compiler.cc
306 DEFINE_int(min_preparse_length, 1024,
307  "minimum length for automatic enable preparsing")
308 DEFINE_bool(always_full_compiler, false,
309  "try to use the dedicated run-once backend for all code")
310 DEFINE_bool(trace_bailout, false,
311  "print reasons for falling back to using the classic V8 backend")
312 
313 // compilation-cache.cc
314 DEFINE_bool(compilation_cache, true, "enable compilation cache")
315 
316 DEFINE_bool(cache_prototype_transitions, true, "cache prototype transitions")
317 
318 // debug.cc
319 DEFINE_bool(trace_debug_json, false, "trace debugging JSON request/response")
320 DEFINE_bool(debugger_auto_break, true,
321  "automatically set the debug break flag when debugger commands are "
322  "in the queue")
323 DEFINE_bool(enable_liveedit, true, "enable liveedit experimental feature")
324 DEFINE_bool(break_on_abort, true, "always cause a debug break before aborting")
325 
326 // execution.cc
327 // Slightly less than 1MB on 64-bit, since Windows' default stack size for
328 // the main execution thread is 1MB for both 32 and 64-bit.
329 DEFINE_int(stack_size, kPointerSize * 123,
330  "default size of stack region v8 is allowed to use (in kBytes)")
331 
332 // frames.cc
333 DEFINE_int(max_stack_trace_source_length, 300,
334  "maximum length of function source code printed in a stack trace.")
335 
336 // full-codegen.cc
337 DEFINE_bool(always_inline_smi_code, false,
338  "always inline smi code in non-opt code")
339 
340 // heap.cc
341 DEFINE_int(max_new_space_size, 0, "max size of the new generation (in kBytes)")
342 DEFINE_int(max_old_space_size, 0, "max size of the old generation (in Mbytes)")
343 DEFINE_int(max_executable_size, 0, "max size of executable memory (in Mbytes)")
344 DEFINE_bool(gc_global, false, "always perform global GCs")
345 DEFINE_int(gc_interval, -1, "garbage collect after <n> allocations")
346 DEFINE_bool(trace_gc, false,
347  "print one trace line following each garbage collection")
348 DEFINE_bool(trace_gc_nvp, false,
349  "print one detailed trace line in name=value format "
350  "after each garbage collection")
351 DEFINE_bool(print_cumulative_gc_stat, false,
352  "print cumulative GC statistics in name=value format on exit")
353 DEFINE_bool(trace_gc_verbose, false,
354  "print more details following each garbage collection")
355 DEFINE_bool(trace_fragmentation, false,
356  "report fragmentation for old pointer and data pages")
357 DEFINE_bool(collect_maps, true,
358  "garbage collect maps from which no objects can be reached")
359 DEFINE_bool(flush_code, true,
360  "flush code that we expect not to use again before full gc")
361 DEFINE_bool(incremental_marking, true, "use incremental marking")
362 DEFINE_bool(incremental_marking_steps, true, "do incremental marking steps")
363 DEFINE_bool(trace_incremental_marking, false,
364  "trace progress of the incremental marking")
365 
366 // v8.cc
367 DEFINE_bool(use_idle_notification, true,
368  "Use idle notification to reduce memory footprint.")
369 
370 DEFINE_bool(send_idle_notification, false,
371  "Send idle notifcation between stress runs.")
372 // ic.cc
373 DEFINE_bool(use_ic, true, "use inline caching")
374 
375 #ifdef LIVE_OBJECT_LIST
376 // liveobjectlist.cc
377 DEFINE_string(lol_workdir, NULL, "path for lol temp files")
378 DEFINE_bool(verify_lol, false, "perform debugging verification for lol")
379 #endif
380 
381 // macro-assembler-ia32.cc
382 DEFINE_bool(native_code_counters, false,
383  "generate extra code for manipulating stats counters")
384 
385 // mark-compact.cc
386 DEFINE_bool(always_compact, false, "Perform compaction on every full GC")
387 DEFINE_bool(lazy_sweeping, true,
388  "Use lazy sweeping for old pointer and data spaces")
389 DEFINE_bool(never_compact, false,
390  "Never perform compaction on full GC - testing only")
391 DEFINE_bool(compact_code_space, true,
392  "Compact code space on full non-incremental collections")
393 DEFINE_bool(cleanup_code_caches_at_gc, true,
394  "Flush inline caches prior to mark compact collection and "
395  "flush code caches in maps during mark compact cycle.")
396 DEFINE_int(random_seed, 0,
397  "Default seed for initializing random generator "
398  "(0, the default, means to use system random).")
399 
400 // objects.cc
401 DEFINE_bool(use_verbose_printer, true, "allows verbose printing")
402 
403 // parser.cc
404 DEFINE_bool(allow_natives_syntax, false, "allow natives syntax")
405 
406 // simulator-arm.cc and simulator-mips.cc
407 DEFINE_bool(trace_sim, false, "Trace simulator execution")
408 DEFINE_bool(check_icache, false,
409  "Check icache flushes in ARM and MIPS simulator")
410 DEFINE_int(stop_sim_at, 0, "Simulator stop after x number of instructions")
411 DEFINE_int(sim_stack_alignment, 8,
412  "Stack alingment in bytes in simulator (4 or 8, 8 is default)")
413 
414 // isolate.cc
415 DEFINE_bool(trace_exception, false,
416  "print stack trace when throwing exceptions")
417 DEFINE_bool(preallocate_message_memory, false,
418  "preallocate some memory to build stack traces.")
419 DEFINE_bool(randomize_hashes,
420  true,
421  "randomize hashes to avoid predictable hash collisions "
422  "(with snapshots this option cannot override the baked-in seed)")
423 DEFINE_int(hash_seed,
424  0,
425  "Fixed seed to use to hash property keys (0 means random)"
426  "(with snapshots this option cannot override the baked-in seed)")
427 
428 // v8.cc
429 DEFINE_bool(preemption, false,
430  "activate a 100ms timer that switches between V8 threads")
431 
432 // Regexp
433 DEFINE_bool(regexp_optimization, true, "generate optimized regexp code")
434 
435 // Testing flags test/cctest/test-{flags,api,serialization}.cc
436 DEFINE_bool(testing_bool_flag, true, "testing_bool_flag")
437 DEFINE_int(testing_int_flag, 13, "testing_int_flag")
438 DEFINE_float(testing_float_flag, 2.5, "float-flag")
439 DEFINE_string(testing_string_flag, "Hello, world!", "string-flag")
440 DEFINE_int(testing_prng_seed, 42, "Seed used for threading test randomness")
441 #ifdef WIN32
442 DEFINE_string(testing_serialization_file, "C:\\Windows\\Temp\\serdes",
443  "file in which to testing_serialize heap")
444 #else
445 DEFINE_string(testing_serialization_file, "/tmp/serdes",
446  "file in which to serialize heap")
447 #endif
448 
449 //
450 // Dev shell flags
451 //
452 
453 DEFINE_bool(help, false, "Print usage message, including flags, on console")
454 DEFINE_bool(dump_counters, false, "Dump counters on exit")
455 
456 #ifdef ENABLE_DEBUGGER_SUPPORT
457 DEFINE_bool(debugger, false, "Enable JavaScript debugger")
458 DEFINE_bool(remote_debugger, false, "Connect JavaScript debugger to the "
459  "debugger agent in another process")
460 DEFINE_bool(debugger_agent, false, "Enable debugger agent")
461 DEFINE_int(debugger_port, 5858, "Port to use for remote debugging")
462 #endif // ENABLE_DEBUGGER_SUPPORT
463 
464 DEFINE_string(map_counters, "", "Map counters to a file")
465 DEFINE_args(js_arguments, JSARGUMENTS_INIT,
466  "Pass all remaining arguments to the script. Alias for \"--\".")
467 
468 #if defined(WEBOS__)
469 DEFINE_bool(debug_compile_events, false, "Enable debugger compile events")
470 DEFINE_bool(debug_script_collected_events, false,
471  "Enable debugger script collected events")
472 #else
473 DEFINE_bool(debug_compile_events, true, "Enable debugger compile events")
474 DEFINE_bool(debug_script_collected_events, true,
475  "Enable debugger script collected events")
476 #endif
477 
478 
479 //
480 // GDB JIT integration flags.
481 //
482 
483 DEFINE_bool(gdbjit, false, "enable GDBJIT interface (disables compacting GC)")
484 DEFINE_bool(gdbjit_full, false, "enable GDBJIT interface for all code objects")
485 DEFINE_bool(gdbjit_dump, false, "dump elf objects with debug info to disk")
486 DEFINE_string(gdbjit_dump_filter, "",
487  "dump only objects containing this substring")
488 
489 // mark-compact.cc
490 DEFINE_bool(force_marking_deque_overflows, false,
491  "force overflows of marking deque by reducing it's size "
492  "to 64 words")
493 
494 DEFINE_bool(stress_compaction, false,
495  "stress the GC compactor to flush out bugs (implies "
496  "--force_marking_deque_overflows)")
497 
498 //
499 // Debug only flags
500 //
501 #undef FLAG
502 #ifdef DEBUG
503 #define FLAG FLAG_FULL
504 #else
505 #define FLAG FLAG_READONLY
506 #endif
507 
508 // checks.cc
509 DEFINE_bool(enable_slow_asserts, false,
510  "enable asserts that are slow to execute")
511 
512 // codegen-ia32.cc / codegen-arm.cc
513 DEFINE_bool(trace_codegen, false,
514  "print name of functions for which code is generated")
515 DEFINE_bool(print_source, false, "pretty print source code")
516 DEFINE_bool(print_builtin_source, false,
517  "pretty print source code for builtins")
518 DEFINE_bool(print_ast, false, "print source AST")
519 DEFINE_bool(print_builtin_ast, false, "print source AST for builtins")
520 DEFINE_string(stop_at, "", "function name where to insert a breakpoint")
521 
522 // compiler.cc
523 DEFINE_bool(print_builtin_scopes, false, "print scopes for builtins")
524 DEFINE_bool(print_scopes, false, "print scopes")
525 
526 // contexts.cc
527 DEFINE_bool(trace_contexts, false, "trace contexts operations")
528 
529 // heap.cc
530 DEFINE_bool(gc_greedy, false, "perform GC prior to some allocations")
531 DEFINE_bool(gc_verbose, false, "print stuff during garbage collection")
532 DEFINE_bool(heap_stats, false, "report heap statistics before and after GC")
533 DEFINE_bool(code_stats, false, "report code statistics after GC")
534 DEFINE_bool(verify_heap, false, "verify heap pointers before and after GC")
535 DEFINE_bool(print_handles, false, "report handles after GC")
536 DEFINE_bool(print_global_handles, false, "report global handles after GC")
537 
538 // ic.cc
539 DEFINE_bool(trace_ic, false, "trace inline cache state transitions")
540 
541 // interface.cc
542 DEFINE_bool(print_interfaces, false, "print interfaces")
543 DEFINE_bool(print_interface_details, false, "print interface inference details")
544 DEFINE_int(print_interface_depth, 5, "depth for printing interfaces")
545 
546 // objects.cc
547 DEFINE_bool(trace_normalization,
548  false,
549  "prints when objects are turned into dictionaries.")
550 
551 // runtime.cc
552 DEFINE_bool(trace_lazy, false, "trace lazy compilation")
553 
554 // spaces.cc
555 DEFINE_bool(collect_heap_spill_statistics, false,
556  "report heap spill statistics along with heap_stats "
557  "(requires heap_stats)")
558 
559 DEFINE_bool(trace_isolates, false, "trace isolate state changes")
560 
561 // VM state
562 DEFINE_bool(log_state_changes, false, "Log state changes.")
563 
564 // Regexp
565 DEFINE_bool(regexp_possessive_quantifier,
566  false,
567  "enable possessive quantifier syntax for testing")
568 DEFINE_bool(trace_regexp_bytecodes, false, "trace regexp bytecode execution")
569 DEFINE_bool(trace_regexp_assembler,
570  false,
571  "trace regexp macro assembler calls.")
572 
573 //
574 // Logging and profiling flags
575 //
576 #undef FLAG
577 #define FLAG FLAG_FULL
578 
579 // log.cc
580 DEFINE_bool(log, false,
581  "Minimal logging (no API, code, GC, suspect, or handles samples).")
582 DEFINE_bool(log_all, false, "Log all events to the log file.")
583 DEFINE_bool(log_runtime, false, "Activate runtime system %Log call.")
584 DEFINE_bool(log_api, false, "Log API events to the log file.")
585 DEFINE_bool(log_code, false,
586  "Log code events to the log file without profiling.")
587 DEFINE_bool(log_gc, false,
588  "Log heap samples on garbage collection for the hp2ps tool.")
589 DEFINE_bool(log_handles, false, "Log global handle events.")
590 DEFINE_bool(log_snapshot_positions, false,
591  "log positions of (de)serialized objects in the snapshot.")
592 DEFINE_bool(log_suspect, false, "Log suspect operations.")
593 DEFINE_bool(prof, false,
594  "Log statistical profiling information (implies --log-code).")
595 DEFINE_bool(prof_auto, true,
596  "Used with --prof, starts profiling automatically")
597 DEFINE_bool(prof_lazy, false,
598  "Used with --prof, only does sampling and logging"
599  " when profiler is active (implies --noprof_auto).")
600 DEFINE_bool(prof_browser_mode, true,
601  "Used with --prof, turns on browser-compatible mode for profiling.")
602 DEFINE_bool(log_regexp, false, "Log regular expression execution.")
603 DEFINE_bool(sliding_state_window, false,
604  "Update sliding state window counters.")
605 DEFINE_string(logfile, "v8.log", "Specify the name of the log file.")
606 DEFINE_bool(ll_prof, false, "Enable low-level linux profiler.")
607 
608 //
609 // Disassembler only flags
610 //
611 #undef FLAG
612 #ifdef ENABLE_DISASSEMBLER
613 #define FLAG FLAG_FULL
614 #else
615 #define FLAG FLAG_READONLY
616 #endif
617 
618 // elements.cc
619 DEFINE_bool(trace_elements_transitions, false, "trace elements transitions")
620 
621 // code-stubs.cc
622 DEFINE_bool(print_code_stubs, false, "print code stubs")
623 DEFINE_bool(test_secondary_stub_cache,
624  false,
625  "test secondary stub cache by disabling the primary one")
626 
627 DEFINE_bool(test_primary_stub_cache,
628  false,
629  "test primary stub cache by disabling the secondary one")
630 
631 // codegen-ia32.cc / codegen-arm.cc
632 DEFINE_bool(print_code, false, "print generated code")
633 DEFINE_bool(print_opt_code, false, "print optimized code")
634 DEFINE_bool(print_unopt_code, false, "print unoptimized code before "
635  "printing optimized code based on it")
636 DEFINE_bool(print_code_verbose, false, "print more information for code")
637 DEFINE_bool(print_builtin_code, false, "print generated code for builtins")
638 
639 #ifdef ENABLE_DISASSEMBLER
640 DEFINE_bool(print_all_code, false, "enable all flags related to printing code")
641 DEFINE_implication(print_all_code, print_code)
642 DEFINE_implication(print_all_code, print_opt_code)
643 DEFINE_implication(print_all_code, print_unopt_code)
644 DEFINE_implication(print_all_code, print_code_verbose)
645 DEFINE_implication(print_all_code, print_builtin_code)
646 DEFINE_implication(print_all_code, print_code_stubs)
647 DEFINE_implication(print_all_code, code_comments)
648 #ifdef DEBUG
649 DEFINE_implication(print_all_code, trace_codegen)
650 #endif
651 #endif
652 
653 // Cleanup...
654 #undef FLAG_FULL
655 #undef FLAG_READONLY
656 #undef FLAG
657 
658 #undef DEFINE_bool
659 #undef DEFINE_int
660 #undef DEFINE_string
661 #undef DEFINE_implication
662 
663 #undef FLAG_MODE_DECLARE
664 #undef FLAG_MODE_DEFINE
665 #undef FLAG_MODE_DEFINE_DEFAULTS
666 #undef FLAG_MODE_META
667 #undef FLAG_MODE_DEFINE_IMPLICATIONS
int random()
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping true
value format" "after each garbage collection") DEFINE_bool(print_cumulative_gc_stat, false, "print cumulative GC statistics in name=value format on exit") DEFINE_bool(trace_gc_verbose, false, "print more details following each garbage collection") DEFINE_bool(trace_fragmentation, false, "report fragmentation for old pointer and data pages") DEFINE_bool(collect_maps, true, "garbage collect maps from which no objects can be reached") DEFINE_bool(flush_code, true, "flush code that we expect not to use again before full gc") DEFINE_bool(incremental_marking, true, "use incremental marking") DEFINE_bool(incremental_marking_steps, true, "do incremental marking steps") DEFINE_bool(trace_incremental_marking, false, "trace progress of the incremental marking") DEFINE_bool(use_idle_notification, true, "Use idle notification to reduce memory footprint.") DEFINE_bool(send_idle_notification, false, "Send idle notifcation between stress runs.") DEFINE_bool(use_ic, true, "use inline caching") DEFINE_bool(native_code_counters, false, "generate extra code for manipulating stats counters") DEFINE_bool(always_compact, false, "Perform compaction on every full GC") DEFINE_bool(lazy_sweeping, true, "Use lazy sweeping for old pointer and data spaces") DEFINE_bool(never_compact, false, "Never perform compaction on full GC-testing only") DEFINE_bool(compact_code_space, true, "Compact code space on full non-incremental collections") DEFINE_bool(cleanup_code_caches_at_gc, true, "Flush inline caches prior to mark compact collection and" "flush code caches in maps during mark compact cycle.") DEFINE_int(random_seed, 0, "Default seed for initializing random generator" "(0, the default, means to use system random).") DEFINE_bool(use_verbose_printer, true, "allows verbose printing") DEFINE_bool(allow_natives_syntax, false, "allow natives syntax") DEFINE_bool(trace_sim, false, "Trace simulator execution") DEFINE_bool(check_icache, false, "Check icache flushes in ARM and MIPS simulator") DEFINE_int(stop_sim_at, 0, "Simulator stop after x number of instructions") DEFINE_int(sim_stack_alignment, 8, "Stack alingment in bytes in simulator(4 or 8, 8 is default)") DEFINE_bool(trace_exception, false, "print stack trace when throwing exceptions") DEFINE_bool(preallocate_message_memory, false, "preallocate some memory to build stack traces.") DEFINE_bool(randomize_hashes, true, "randomize hashes to avoid predictable hash collisions" "(with snapshots this option cannot override the baked-in seed)") DEFINE_int(hash_seed, 0, "Fixed seed to use to hash property keys(0 means random)" "(with snapshots this option cannot override the baked-in seed)") DEFINE_bool(preemption, false, "activate a 100ms timer that switches between V8 threads") DEFINE_bool(regexp_optimization, true, "generate optimized regexp code") DEFINE_bool(testing_bool_flag, true, "testing_bool_flag") DEFINE_int(testing_int_flag, 13, "testing_int_flag") DEFINE_float(testing_float_flag, 2.5, "float-flag") DEFINE_string(testing_string_flag, "Hello, world!", "string-flag") DEFINE_int(testing_prng_seed, 42, "Seed used for threading test randomness") DEFINE_string(testing_serialization_file, "/tmp/serdes", "file in which to serialize heap") DEFINE_bool(help, false, "Print usage message, including flags, on console") DEFINE_bool(dump_counters, false, "Dump counters on exit") DEFINE_string(map_counters, "", "Map counters to a file") DEFINE_args(js_arguments, JSARGUMENTS_INIT, "Pass all remaining arguments to the script.Alias for\"--\".") DEFINE_bool(debug_compile_events, true,"Enable debugger compile events") DEFINE_bool(debug_script_collected_events, true,"Enable debugger script collected events") DEFINE_bool(gdbjit, false,"enable GDBJIT interface (disables compacting GC)") DEFINE_bool(gdbjit_full, false,"enable GDBJIT interface for all code objects") DEFINE_bool(gdbjit_dump, false,"dump elf objects with debug info to disk") DEFINE_string(gdbjit_dump_filter,"","dump only objects containing this substring") DEFINE_bool(force_marking_deque_overflows, false,"force overflows of marking deque by reducing it's size ""to 64 words") DEFINE_bool(stress_compaction, false,"stress the GC compactor to flush out bugs (implies ""--force_marking_deque_overflows)")#define FLAG DEFINE_bool(enable_slow_asserts, false,"enable asserts that are slow to execute") DEFINE_bool(trace_codegen, false,"print name of functions for which code is generated") DEFINE_bool(print_source, false,"pretty print source code") DEFINE_bool(print_builtin_source, false,"pretty print source code for builtins") DEFINE_bool(print_ast, false,"print source AST") DEFINE_bool(print_builtin_ast, false,"print source AST for builtins") DEFINE_string(stop_at,"","function name where to insert a breakpoint") DEFINE_bool(print_builtin_scopes, false,"print scopes for builtins") DEFINE_bool(print_scopes, false,"print scopes") DEFINE_bool(trace_contexts, false,"trace contexts operations") DEFINE_bool(gc_greedy, false,"perform GC prior to some allocations") DEFINE_bool(gc_verbose, false,"print stuff during garbage collection") DEFINE_bool(heap_stats, false,"report heap statistics before and after GC") DEFINE_bool(code_stats, false,"report code statistics after GC") DEFINE_bool(verify_heap, false,"verify heap pointers before and after GC") DEFINE_bool(print_handles, false,"report handles after GC") DEFINE_bool(print_global_handles, false,"report global handles after GC") DEFINE_bool(trace_ic, false,"trace inline cache state transitions") DEFINE_bool(print_interfaces, false,"print interfaces") DEFINE_bool(print_interface_details, false,"print interface inference details") DEFINE_int(print_interface_depth, 5,"depth for printing interfaces") DEFINE_bool(trace_normalization, false,"prints when objects are turned into dictionaries.") DEFINE_bool(trace_lazy, false,"trace lazy compilation") DEFINE_bool(collect_heap_spill_statistics, false,"report heap spill statistics along with heap_stats ""(requires heap_stats)") DEFINE_bool(trace_isolates, false,"trace isolate state changes") DEFINE_bool(log_state_changes, false,"Log state changes.") DEFINE_bool(regexp_possessive_quantifier, false,"enable possessive quantifier syntax for testing") DEFINE_bool(trace_regexp_bytecodes, false,"trace regexp bytecode execution") DEFINE_bool(trace_regexp_assembler, false,"trace regexp macro assembler calls.")#define FLAG DEFINE_bool(log, false,"Minimal logging (no API, code, GC, suspect, or handles samples).") DEFINE_bool(log_all, false,"Log all events to the log file.") DEFINE_bool(log_runtime, false,"Activate runtime system %Log call.") DEFINE_bool(log_api, false,"Log API events to the log file.") DEFINE_bool(log_code, false,"Log code events to the log file without profiling.") DEFINE_bool(log_gc, false,"Log heap samples on garbage collection for the hp2ps tool.") DEFINE_bool(log_handles, false,"Log global handle events.") DEFINE_bool(log_snapshot_positions, false,"log positions of (de)serialized objects in the snapshot.") DEFINE_bool(log_suspect, false,"Log suspect operations.") DEFINE_bool(prof, false,"Log statistical profiling information (implies --log-code).") DEFINE_bool(prof_auto, true,"Used with --prof, starts profiling automatically") DEFINE_bool(prof_lazy, false,"Used with --prof, only does sampling and logging"" when profiler is active (implies --noprof_auto).") DEFINE_bool(prof_browser_mode, true,"Used with --prof, turns on browser-compatible mode for profiling.") DEFINE_bool(log_regexp, false,"Log regular expression execution.") DEFINE_bool(sliding_state_window, false,"Update sliding state window counters.") DEFINE_string(logfile,"v8.log","Specify the name of the log file.") DEFINE_bool(ll_prof, false,"Enable low-level linux profiler.")#define FLAG DEFINE_bool(trace_elements_transitions, false,"trace elements transitions") DEFINE_bool(print_code_stubs, false,"print code stubs") DEFINE_bool(test_secondary_stub_cache, false,"test secondary stub cache by disabling the primary one") DEFINE_bool(test_primary_stub_cache, false,"test primary stub cache by disabling the secondary one") DEFINE_bool(print_code, false,"print generated code") DEFINE_bool(print_opt_code, false,"print optimized code") DEFINE_bool(print_unopt_code, false,"print unoptimized code before ""printing optimized code based on it") DEFINE_bool(print_code_verbose, false,"print more information for code") DEFINE_bool(print_builtin_code, false,"print generated code for builtins")#43"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flags.cc"2#define FLAG_MODE_DEFINE_DEFAULTS#1"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flag-definitions.h"1#define FLAG_FULL(ftype, ctype, nam, def, cmt)#define FLAG_READONLY(ftype, ctype, nam, def, cmt)#define DEFINE_implication(whenflag, thenflag)#define DEFINE_bool(nam, def, cmt)#define DEFINE_int(nam, def, cmt)#define DEFINE_float(nam, def, cmt)#define DEFINE_string(nam, def, cmt)#define DEFINE_args(nam, def, cmt)#define FLAG DEFINE_bool(use_strict, false,"enforce strict mode") DEFINE_bool(es5_readonly, false,"activate correct semantics for inheriting readonliness") DEFINE_bool(es52_globals, false,"activate new semantics for global var declarations") DEFINE_bool(harmony_typeof, false,"enable harmony semantics for typeof") DEFINE_bool(harmony_scoping, false,"enable harmony block scoping") DEFINE_bool(harmony_modules, false,"enable harmony modules (implies block scoping)") DEFINE_bool(harmony_proxies, false,"enable harmony proxies") DEFINE_bool(harmony_collections, false,"enable harmony collections (sets, maps, and weak maps)") DEFINE_bool(harmony, false,"enable all harmony features (except typeof)") DEFINE_implication(harmony, harmony_scoping) DEFINE_implication(harmony, harmony_modules) DEFINE_implication(harmony, harmony_proxies) DEFINE_implication(harmony, harmony_collections) DEFINE_implication(harmony_modules, harmony_scoping) DEFINE_bool(packed_arrays, false,"optimizes arrays that have no holes") DEFINE_bool(smi_only_arrays, true,"tracks arrays with only smi values") DEFINE_bool(clever_optimizations, true,"Optimize object size, Array shift, DOM strings and string +") DEFINE_bool(unbox_double_arrays, true,"automatically unbox arrays of doubles") DEFINE_bool(string_slices, true,"use string slices") DEFINE_bool(crankshaft, true,"use crankshaft") DEFINE_string(hydrogen_filter,"","optimization filter") DEFINE_bool(use_range, true,"use hydrogen range analysis") DEFINE_bool(eliminate_dead_phis, true,"eliminate dead phis") DEFINE_bool(use_gvn, true,"use hydrogen global value numbering") DEFINE_bool(use_canonicalizing, true,"use hydrogen instruction canonicalizing") DEFINE_bool(use_inlining, true,"use function inlining") DEFINE_int(max_inlined_source_size, 600,"maximum source size in bytes considered for a single inlining") DEFINE_int(max_inlined_nodes, 196,"maximum number of AST nodes considered for a single inlining") DEFINE_int(max_inlined_nodes_cumulative, 196,"maximum cumulative number of AST nodes considered for inlining") DEFINE_bool(loop_invariant_code_motion, true,"loop invariant code motion") DEFINE_bool(collect_megamorphic_maps_from_stub_cache, true,"crankshaft harvests type feedback from stub cache") DEFINE_bool(hydrogen_stats, false,"print statistics for hydrogen") DEFINE_bool(trace_hydrogen, false,"trace generated hydrogen to file") DEFINE_string(trace_phase,"Z","trace generated IR for specified phases") DEFINE_bool(trace_inlining, false,"trace inlining decisions") DEFINE_bool(trace_alloc, false,"trace register allocator") DEFINE_bool(trace_all_uses, false,"trace all use positions") DEFINE_bool(trace_range, false,"trace range analysis") DEFINE_bool(trace_gvn, false,"trace global value numbering") DEFINE_bool(trace_representation, false,"trace representation types") DEFINE_bool(stress_pointer_maps, false,"pointer map for every instruction") DEFINE_bool(stress_environments, false,"environment for every instruction") DEFINE_int(deopt_every_n_times, 0,"deoptimize every n times a deopt point is passed") DEFINE_bool(trap_on_deopt, false,"put a break point before deoptimizing") DEFINE_bool(deoptimize_uncommon_cases, true,"deoptimize uncommon cases") DEFINE_bool(polymorphic_inlining, true,"polymorphic inlining") DEFINE_bool(use_osr, true,"use on-stack replacement") DEFINE_bool(array_bounds_checks_elimination, false,"perform array bounds checks elimination") DEFINE_bool(array_index_dehoisting, false,"perform array index dehoisting") DEFINE_bool(trace_osr, false,"trace on-stack replacement") DEFINE_int(stress_runs, 0,"number of stress runs") DEFINE_bool(optimize_closures, true,"optimize closures") DEFINE_bool(inline_construct, true,"inline constructor calls") DEFINE_bool(inline_arguments, true,"inline functions with arguments object") DEFINE_int(loop_weight, 1,"loop weight for representation inference") DEFINE_bool(optimize_for_in, true,"optimize functions containing for-in loops") DEFINE_bool(experimental_profiler, true,"enable all profiler experiments") DEFINE_bool(watch_ic_patching, false,"profiler considers IC stability") DEFINE_int(frame_count, 1,"number of stack frames inspected by the profiler") DEFINE_bool(self_optimization, false,"primitive functions trigger their own optimization") DEFINE_bool(direct_self_opt, false,"call recompile stub directly when self-optimizing") DEFINE_bool(retry_self_opt, false,"re-try self-optimization if it failed") DEFINE_bool(count_based_interrupts, false,"trigger profiler ticks based on counting instead of timing") DEFINE_bool(interrupt_at_exit, false,"insert an interrupt check at function exit") DEFINE_bool(weighted_back_edges, false,"weight back edges by jump distance for interrupt triggering") DEFINE_int(interrupt_budget, 5900,"execution budget before interrupt is triggered") DEFINE_int(type_info_threshold, 15,"percentage of ICs that must have type info to allow optimization") DEFINE_int(self_opt_count, 130,"call count before self-optimization") DEFINE_implication(experimental_profiler, watch_ic_patching) DEFINE_implication(experimental_profiler, self_optimization) DEFINE_implication(experimental_profiler, retry_self_opt) DEFINE_implication(experimental_profiler, count_based_interrupts) DEFINE_implication(experimental_profiler, interrupt_at_exit) DEFINE_implication(experimental_profiler, weighted_back_edges) DEFINE_bool(trace_opt_verbose, false,"extra verbose compilation tracing") DEFINE_implication(trace_opt_verbose, trace_opt) DEFINE_bool(debug_code, false,"generate extra code (assertions) for debugging") DEFINE_bool(code_comments, false,"emit comments in code disassembly") DEFINE_bool(enable_sse2, true,"enable use of SSE2 instructions if available") DEFINE_bool(enable_sse3, true,"enable use of SSE3 instructions if available") DEFINE_bool(enable_sse4_1, true,"enable use of SSE4.1 instructions if available") DEFINE_bool(enable_cmov, true,"enable use of CMOV instruction if available") DEFINE_bool(enable_rdtsc, true,"enable use of RDTSC instruction if available") DEFINE_bool(enable_sahf, true,"enable use of SAHF instruction if available (X64 only)") DEFINE_bool(enable_vfp3, true,"enable use of VFP3 instructions if available - this implies ""enabling ARMv7 instructions (ARM only)") DEFINE_bool(enable_armv7, true,"enable use of ARMv7 instructions if available (ARM only)") DEFINE_bool(enable_fpu, true,"enable use of MIPS FPU instructions if available (MIPS only)") DEFINE_string(expose_natives_as, NULL,"expose natives in global object") DEFINE_string(expose_debug_as, NULL,"expose debug in global object") DEFINE_bool(expose_gc, false,"expose gc extension") DEFINE_bool(expose_externalize_string, false,"expose externalize string extension") DEFINE_int(stack_trace_limit, 10,"number of stack frames to capture") DEFINE_bool(builtins_in_stack_traces, false,"show built-in functions in stack traces") DEFINE_bool(disable_native_files, false,"disable builtin natives files") DEFINE_bool(inline_new, true,"use fast inline allocation") DEFINE_bool(stack_trace_on_abort, true,"print a stack trace if an assertion failure occurs") DEFINE_bool(trace, false,"trace function calls") DEFINE_bool(mask_constants_with_cookie, true,"use random jit cookie to mask large constants") DEFINE_bool(lazy, true,"use lazy compilation") DEFINE_bool(trace_opt, false,"trace lazy optimization") DEFINE_bool(trace_opt_stats, false,"trace lazy optimization statistics") DEFINE_bool(opt, true,"use adaptive optimizations") DEFINE_bool(always_opt, false,"always try to optimize functions") DEFINE_bool(prepare_always_opt, false,"prepare for turning on always opt") DEFINE_bool(trace_deopt, false,"trace deoptimization") DEFINE_int(min_preparse_length, 1024,"minimum length for automatic enable preparsing") DEFINE_bool(always_full_compiler, false,"try to use the dedicated run-once backend for all code") DEFINE_bool(trace_bailout, false,"print reasons for falling back to using the classic V8 backend") DEFINE_bool(compilation_cache, true,"enable compilation cache") DEFINE_bool(cache_prototype_transitions, true,"cache prototype transitions") DEFINE_bool(trace_debug_json, false,"trace debugging JSON request/response") DEFINE_bool(debugger_auto_break, true,"automatically set the debug break flag when debugger commands are ""in the queue") DEFINE_bool(enable_liveedit, true,"enable liveedit experimental feature") DEFINE_bool(break_on_abort, true,"always cause a debug break before aborting") DEFINE_int(stack_size, kPointerSize *123,"default size of stack region v8 is allowed to use (in kBytes)") DEFINE_int(max_stack_trace_source_length, 300,"maximum length of function source code printed in a stack trace.") DEFINE_bool(always_inline_smi_code, false,"always inline smi code in non-opt code") DEFINE_int(max_new_space_size, 0,"max size of the new generation (in kBytes)") DEFINE_int(max_old_space_size, 0,"max size of the old generation (in Mbytes)") DEFINE_int(max_executable_size, 0,"max size of executable memory (in Mbytes)") DEFINE_bool(gc_global, false,"always perform global GCs") DEFINE_int(gc_interval,-1,"garbage collect after <n> allocations") DEFINE_bool(trace_gc, false,"print one trace line following each garbage collection") DEFINE_bool(trace_gc_nvp, false,"print one detailed trace line in name=value format ""after each garbage collection") DEFINE_bool(print_cumulative_gc_stat, false,"print cumulative GC statistics in name=value format on exit") DEFINE_bool(trace_gc_verbose, false,"print more details following each garbage collection") DEFINE_bool(trace_fragmentation, false,"report fragmentation for old pointer and data pages") DEFINE_bool(collect_maps, true,"garbage collect maps from which no objects can be reached") DEFINE_bool(flush_code, true,"flush code that we expect not to use again before full gc") DEFINE_bool(incremental_marking, true,"use incremental marking") DEFINE_bool(incremental_marking_steps, true,"do incremental marking steps") DEFINE_bool(trace_incremental_marking, false,"trace progress of the incremental marking") DEFINE_bool(use_idle_notification, true,"Use idle notification to reduce memory footprint.") DEFINE_bool(send_idle_notification, false,"Send idle notifcation between stress runs.") DEFINE_bool(use_ic, true,"use inline caching") DEFINE_bool(native_code_counters, false,"generate extra code for manipulating stats counters") DEFINE_bool(always_compact, false,"Perform compaction on every full GC") DEFINE_bool(lazy_sweeping, true,"Use lazy sweeping for old pointer and data spaces") DEFINE_bool(never_compact, false,"Never perform compaction on full GC - testing only") DEFINE_bool(compact_code_space, true,"Compact code space on full non-incremental collections") DEFINE_bool(cleanup_code_caches_at_gc, true,"Flush inline caches prior to mark compact collection and ""flush code caches in maps during mark compact cycle.") DEFINE_int(random_seed, 0,"Default seed for initializing random generator ""(0, the default, means to use system random).") DEFINE_bool(use_verbose_printer, true,"allows verbose printing") DEFINE_bool(allow_natives_syntax, false,"allow natives syntax") DEFINE_bool(trace_sim, false,"Trace simulator execution") DEFINE_bool(check_icache, false,"Check icache flushes in ARM and MIPS simulator") DEFINE_int(stop_sim_at, 0,"Simulator stop after x number of instructions") DEFINE_int(sim_stack_alignment, 8,"Stack alingment in bytes in simulator (4 or 8, 8 is default)") DEFINE_bool(trace_exception, false,"print stack trace when throwing exceptions") DEFINE_bool(preallocate_message_memory, false,"preallocate some memory to build stack traces.") DEFINE_bool(randomize_hashes, true,"randomize hashes to avoid predictable hash collisions ""(with snapshots this option cannot override the baked-in seed)") DEFINE_int(hash_seed, 0,"Fixed seed to use to hash property keys (0 means random)""(with snapshots this option cannot override the baked-in seed)") DEFINE_bool(preemption, false,"activate a 100ms timer that switches between V8 threads") DEFINE_bool(regexp_optimization, true,"generate optimized regexp code") DEFINE_bool(testing_bool_flag, true,"testing_bool_flag") DEFINE_int(testing_int_flag, 13,"testing_int_flag") DEFINE_float(testing_float_flag, 2.5,"float-flag") DEFINE_string(testing_string_flag,"Hello, world!","string-flag") DEFINE_int(testing_prng_seed, 42,"Seed used for threading test randomness") DEFINE_string(testing_serialization_file,"/tmp/serdes","file in which to serialize heap") DEFINE_bool(help, false,"Print usage message, including flags, on console") DEFINE_bool(dump_counters, false,"Dump counters on exit") DEFINE_string(map_counters,"","Map counters to a file") DEFINE_args(js_arguments, JSARGUMENTS_INIT,"Pass all remaining arguments to the script. Alias for \"--\".") DEFINE_bool(debug_compile_events, true,"Enable debugger compile events") DEFINE_bool(debug_script_collected_events, true,"Enable debugger script collected events") DEFINE_bool(gdbjit, false,"enable GDBJIT interface (disables compacting GC)") DEFINE_bool(gdbjit_full, false,"enable GDBJIT interface for all code objects") DEFINE_bool(gdbjit_dump, false,"dump elf objects with debug info to disk") DEFINE_string(gdbjit_dump_filter,"","dump only objects containing this substring") DEFINE_bool(force_marking_deque_overflows, false,"force overflows of marking deque by reducing it's size ""to 64 words") DEFINE_bool(stress_compaction, false,"stress the GC compactor to flush out bugs (implies ""--force_marking_deque_overflows)")#define FLAG DEFINE_bool(enable_slow_asserts, false,"enable asserts that are slow to execute") DEFINE_bool(trace_codegen, false,"print name of functions for which code is generated") DEFINE_bool(print_source, false,"pretty print source code") DEFINE_bool(print_builtin_source, false,"pretty print source code for builtins") DEFINE_bool(print_ast, false,"print source AST") DEFINE_bool(print_builtin_ast, false,"print source AST for builtins") DEFINE_string(stop_at,"","function name where to insert a breakpoint") DEFINE_bool(print_builtin_scopes, false,"print scopes for builtins") DEFINE_bool(print_scopes, false,"print scopes") DEFINE_bool(trace_contexts, false,"trace contexts operations") DEFINE_bool(gc_greedy, false,"perform GC prior to some allocations") DEFINE_bool(gc_verbose, false,"print stuff during garbage collection") DEFINE_bool(heap_stats, false,"report heap statistics before and after GC") DEFINE_bool(code_stats, false,"report code statistics after GC") DEFINE_bool(verify_heap, false,"verify heap pointers before and after GC") DEFINE_bool(print_handles, false,"report handles after GC") DEFINE_bool(print_global_handles, false,"report global handles after GC") DEFINE_bool(trace_ic, false,"trace inline cache state transitions") DEFINE_bool(print_interfaces, false,"print interfaces") DEFINE_bool(print_interface_details, false,"print interface inference details") DEFINE_int(print_interface_depth, 5,"depth for printing interfaces") DEFINE_bool(trace_normalization, false,"prints when objects are turned into dictionaries.") DEFINE_bool(trace_lazy, false,"trace lazy compilation") DEFINE_bool(collect_heap_spill_statistics, false,"report heap spill statistics along with heap_stats ""(requires heap_stats)") DEFINE_bool(trace_isolates, false,"trace isolate state changes") DEFINE_bool(log_state_changes, false,"Log state changes.") DEFINE_bool(regexp_possessive_quantifier, false,"enable possessive quantifier syntax for testing") DEFINE_bool(trace_regexp_bytecodes, false,"trace regexp bytecode execution") DEFINE_bool(trace_regexp_assembler, false,"trace regexp macro assembler calls.")#define FLAG DEFINE_bool(log, false,"Minimal logging (no API, code, GC, suspect, or handles samples).") DEFINE_bool(log_all, false,"Log all events to the log file.") DEFINE_bool(log_runtime, false,"Activate runtime system %Log call.") DEFINE_bool(log_api, false,"Log API events to the log file.") DEFINE_bool(log_code, false,"Log code events to the log file without profiling.") DEFINE_bool(log_gc, false,"Log heap samples on garbage collection for the hp2ps tool.") DEFINE_bool(log_handles, false,"Log global handle events.") DEFINE_bool(log_snapshot_positions, false,"log positions of (de)serialized objects in the snapshot.") DEFINE_bool(log_suspect, false,"Log suspect operations.") DEFINE_bool(prof, false,"Log statistical profiling information (implies --log-code).") DEFINE_bool(prof_auto, true,"Used with --prof, starts profiling automatically") DEFINE_bool(prof_lazy, false,"Used with --prof, only does sampling and logging"" when profiler is active (implies --noprof_auto).") DEFINE_bool(prof_browser_mode, true,"Used with --prof, turns on browser-compatible mode for profiling.") DEFINE_bool(log_regexp, false,"Log regular expression execution.") DEFINE_bool(sliding_state_window, false,"Update sliding state window counters.") DEFINE_string(logfile,"v8.log","Specify the name of the log file.") DEFINE_bool(ll_prof, false,"Enable low-level linux profiler.")#define FLAG DEFINE_bool(trace_elements_transitions, false,"trace elements transitions") DEFINE_bool(print_code_stubs, false,"print code stubs") DEFINE_bool(test_secondary_stub_cache, false,"test secondary stub cache by disabling the primary one") DEFINE_bool(test_primary_stub_cache, false,"test primary stub cache by disabling the secondary one") DEFINE_bool(print_code, false,"print generated code") DEFINE_bool(print_opt_code, false,"print optimized code") DEFINE_bool(print_unopt_code, false,"print unoptimized code before ""printing optimized code based on it") DEFINE_bool(print_code_verbose, false,"print more information for code") DEFINE_bool(print_builtin_code, false,"print generated code for builtins")#47"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flags.cc"2 namespace{struct Flag{enum FlagType{TYPE_BOOL, TYPE_INT, TYPE_FLOAT, TYPE_STRING, TYPE_ARGS} name
Definition: flags.cc:1349
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if enable use of VFP3 instructions if available this implies enabling ARMv7 instructions(ARM only)") DEFINE_bool(enable_armv7
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if available(X64 only)") DEFINE_bool(enable_vfp3
unsigned int seed
Definition: test-strings.cc:17
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony modules(implies block scoping)") DEFINE_bool(harmony_proxies
#define DEFINE_float(nam, def, cmt)
Definition: flags.h:125
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if enable use of VFP3 instructions if available this implies enabling ARMv7 enable use of ARMv7 instructions if enable use of MIPS FPU instructions if NULL
const int kPointerSize
Definition: globals.h:234
intptr_t AtomicWord
Definition: atomicops.h:72
#define DEFINE_int(nam, def, cmt)
Definition: flags.h:124
#define DEFINE_args(nam, def, cmt)
Definition: flags.h:127
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen Z
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping DEFINE_implication(harmony, harmony_modules) DEFINE_implication(harmony
void generate(MacroAssembler *masm, i::Vector< const char > string)
Definition: test-hashing.cc:52
#define GDBJIT(action)
Definition: gdb-jit.h:141
#define DEFINE_string(nam, def, cmt)
Definition: flags.h:126
#define DEFINE_bool(nam, def, cmt)
Definition: flags.h:123
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kEvalFrominstructionsOffsetOffset kThisPropertyAssignmentsOffset flag
Definition: objects-inl.h:3682
#define JSARGUMENTS_INIT
Definition: flags.h:85
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony features(except typeof)") DEFINE_implication(harmony
void Flush(FILE *out)
Definition: v8utils.cc:56
void check(i::Vector< const char > string)
FlagType type() const
Definition: flags.cc:1358