Revision f230a1cf deps/v8/src/flag-definitions.h

View differences:

deps/v8/src/flag-definitions.h
90 90
#define DEFINE_implication(whenflag, thenflag)
91 91
#endif
92 92

  
93
#define COMMA ,
93 94

  
94 95
#ifdef FLAG_MODE_DECLARE
95 96
// Structure used to hold a collection of arguments to the JavaScript code.
96
#define JSARGUMENTS_INIT {{}}
97 97
struct JSArguments {
98 98
public:
99
  inline int argc() const {
100
    return static_cast<int>(storage_[0]);
101
  }
102
  inline const char** argv() const {
103
    return reinterpret_cast<const char**>(storage_[1]);
104
  }
105 99
  inline const char*& operator[] (int idx) const {
106
    return argv()[idx];
107
  }
108
  inline JSArguments& operator=(JSArguments args) {
109
    set_argc(args.argc());
110
    set_argv(args.argv());
111
    return *this;
100
    return argv[idx];
112 101
  }
113 102
  static JSArguments Create(int argc, const char** argv) {
114 103
    JSArguments args;
115
    args.set_argc(argc);
116
    args.set_argv(argv);
104
    args.argc = argc;
105
    args.argv = argv;
117 106
    return args;
118 107
  }
119
private:
120
  void set_argc(int argc) {
121
    storage_[0] = argc;
122
  }
123
  void set_argv(const char** argv) {
124
    storage_[1] = reinterpret_cast<AtomicWord>(argv);
108
  int argc;
109
  const char** argv;
110
};
111

  
112
struct MaybeBoolFlag {
113
  static MaybeBoolFlag Create(bool has_value, bool value) {
114
    MaybeBoolFlag flag;
115
    flag.has_value = has_value;
116
    flag.value = value;
117
    return flag;
125 118
  }
126
public:
127
  // Contains argc and argv. Unfortunately we have to store these two fields
128
  // into a single one to avoid making the initialization macro (which would be
129
  // "{ 0, NULL }") contain a coma.
130
  AtomicWord storage_[2];
119
  bool has_value;
120
  bool value;
131 121
};
132 122
#endif
133 123

  
......
148 138
#endif
149 139

  
150 140
#define DEFINE_bool(nam, def, cmt)   FLAG(BOOL, bool, nam, def, cmt)
141
#define DEFINE_maybe_bool(nam, cmt)  FLAG(MAYBE_BOOL, MaybeBoolFlag, nam,  \
142
                                          { false COMMA false }, cmt)
151 143
#define DEFINE_int(nam, def, cmt)    FLAG(INT, int, nam, def, cmt)
152 144
#define DEFINE_float(nam, def, cmt)  FLAG(FLOAT, double, nam, def, cmt)
153 145
#define DEFINE_string(nam, def, cmt) FLAG(STRING, const char*, nam, def, cmt)
154
#define DEFINE_args(nam, def, cmt)   FLAG(ARGS, JSArguments, nam, def, cmt)
146
#define DEFINE_args(nam, cmt)        FLAG(ARGS, JSArguments, nam, \
147
                                          { 0 COMMA NULL }, cmt)
155 148

  
156 149
#define DEFINE_ALIAS_bool(alias, nam)  FLAG_ALIAS(BOOL, bool, alias, nam)
157 150
#define DEFINE_ALIAS_int(alias, nam)   FLAG_ALIAS(INT, int, alias, nam)
......
183 176
            "enable harmony collections (sets, maps, and weak maps)")
184 177
DEFINE_bool(harmony_observation, false,
185 178
            "enable harmony object observation (implies harmony collections")
186
DEFINE_bool(harmony_typed_arrays, true,
187
            "enable harmony typed arrays")
188
DEFINE_bool(harmony_array_buffer, true,
189
            "enable harmony array buffer")
190
DEFINE_implication(harmony_typed_arrays, harmony_array_buffer)
191 179
DEFINE_bool(harmony_generators, false, "enable harmony generators")
192 180
DEFINE_bool(harmony_iteration, false, "enable harmony iteration (for-of)")
193 181
DEFINE_bool(harmony_numeric_literals, false,
194 182
            "enable harmony numeric literals (0o77, 0b11)")
195 183
DEFINE_bool(harmony_strings, false, "enable harmony string")
196 184
DEFINE_bool(harmony_arrays, false, "enable harmony arrays")
185
DEFINE_bool(harmony_maths, false, "enable harmony math functions")
197 186
DEFINE_bool(harmony, false, "enable all harmony features (except typeof)")
198 187
DEFINE_implication(harmony, harmony_scoping)
199 188
DEFINE_implication(harmony, harmony_modules)
......
206 195
DEFINE_implication(harmony, harmony_numeric_literals)
207 196
DEFINE_implication(harmony, harmony_strings)
208 197
DEFINE_implication(harmony, harmony_arrays)
198
DEFINE_implication(harmony, harmony_maths)
209 199
DEFINE_implication(harmony_modules, harmony_scoping)
210 200
DEFINE_implication(harmony_observation, harmony_collections)
211
// TODO[dslomov] add harmony => harmony_typed_arrays
212 201

  
213 202
// Flags for experimental implementation features.
214 203
DEFINE_bool(packed_arrays, true, "optimizes arrays that have no holes")
215 204
DEFINE_bool(smi_only_arrays, true, "tracks arrays with only smi values")
216
DEFINE_bool(clever_optimizations,
217
            true,
205
DEFINE_bool(clever_optimizations, true,
218 206
            "Optimize object size, Array shift, DOM strings and string +")
219 207
DEFINE_bool(pretenuring, true, "allocate objects in old space")
220 208
// TODO(hpayer): We will remove this flag as soon as we have pretenuring
221 209
// support for specific allocation sites.
222 210
DEFINE_bool(pretenuring_call_new, false, "pretenure call new")
211
DEFINE_bool(allocation_site_pretenuring, false,
212
            "pretenure with allocation sites")
223 213
DEFINE_bool(track_fields, true, "track fields with only smi values")
224 214
DEFINE_bool(track_double_fields, true, "track fields with double values")
225 215
DEFINE_bool(track_heap_object_fields, true, "track fields with heap values")
......
229 219
DEFINE_implication(track_computed_fields, track_fields)
230 220
DEFINE_bool(smi_binop, true, "support smi representation in binary operations")
231 221

  
222
// Flags for optimization types.
223
DEFINE_bool(optimize_for_size, false,
224
            "Enables optimizations which favor memory size over execution "
225
            "speed.")
226

  
232 227
// Flags for data representation optimizations
233 228
DEFINE_bool(unbox_double_arrays, true, "automatically unbox arrays of doubles")
234 229
DEFINE_bool(string_slices, true, "use string slices")
......
240 235
DEFINE_bool(use_gvn, true, "use hydrogen global value numbering")
241 236
DEFINE_bool(use_canonicalizing, true, "use hydrogen instruction canonicalizing")
242 237
DEFINE_bool(use_inlining, true, "use function inlining")
243
DEFINE_bool(use_escape_analysis, false, "use hydrogen escape analysis")
238
DEFINE_bool(use_escape_analysis, true, "use hydrogen escape analysis")
244 239
DEFINE_bool(use_allocation_folding, true, "use allocation folding")
245 240
DEFINE_int(max_inlining_levels, 5, "maximum number of inlining levels")
246 241
DEFINE_int(max_inlined_source_size, 600,
......
251 246
           "maximum cumulative number of AST nodes considered for inlining")
252 247
DEFINE_bool(loop_invariant_code_motion, true, "loop invariant code motion")
253 248
DEFINE_bool(fast_math, true, "faster (but maybe less accurate) math functions")
254
DEFINE_bool(collect_megamorphic_maps_from_stub_cache,
255
            true,
249
DEFINE_bool(collect_megamorphic_maps_from_stub_cache, true,
256 250
            "crankshaft harvests type feedback from stub cache")
257 251
DEFINE_bool(hydrogen_stats, false, "print statistics for hydrogen")
252
DEFINE_bool(trace_check_elimination, false, "trace check elimination phase")
258 253
DEFINE_bool(trace_hydrogen, false, "trace generated hydrogen to file")
259 254
DEFINE_string(trace_hydrogen_filter, "*", "hydrogen tracing filter")
260 255
DEFINE_bool(trace_hydrogen_stubs, false, "trace generated hydrogen for stubs")
261 256
DEFINE_string(trace_hydrogen_file, NULL, "trace hydrogen to given file name")
262 257
DEFINE_string(trace_phase, "HLZ", "trace generated IR for specified phases")
263 258
DEFINE_bool(trace_inlining, false, "trace inlining decisions")
259
DEFINE_bool(trace_load_elimination, false, "trace load elimination")
264 260
DEFINE_bool(trace_alloc, false, "trace register allocator")
265 261
DEFINE_bool(trace_all_uses, false, "trace all use positions")
266 262
DEFINE_bool(trace_range, false, "trace range analysis")
......
274 270
DEFINE_bool(trace_generalization, false, "trace map generalization")
275 271
DEFINE_bool(stress_pointer_maps, false, "pointer map for every instruction")
276 272
DEFINE_bool(stress_environments, false, "environment for every instruction")
277
DEFINE_int(deopt_every_n_times,
278
           0,
273
DEFINE_int(deopt_every_n_times, 0,
279 274
           "deoptimize every n times a deopt point is passed")
280
DEFINE_int(deopt_every_n_garbage_collections,
281
           0,
275
DEFINE_int(deopt_every_n_garbage_collections, 0,
282 276
           "deoptimize every n garbage collections")
283 277
DEFINE_bool(print_deopt_stress, false, "print number of possible deopt points")
284 278
DEFINE_bool(trap_on_deopt, false, "put a break point before deoptimizing")
......
295 289
            "perform array index dehoisting")
296 290
DEFINE_bool(analyze_environment_liveness, true,
297 291
            "analyze liveness of environment slots and zap dead values")
292
DEFINE_bool(load_elimination, false, "use load elimination")
293
DEFINE_bool(check_elimination, false, "use check elimination")
298 294
DEFINE_bool(dead_code_elimination, true, "use dead code elimination")
299 295
DEFINE_bool(fold_constants, true, "use constant folding")
300 296
DEFINE_bool(trace_dead_code_elimination, false, "trace dead code elimination")
301
DEFINE_bool(unreachable_code_elimination, false,
302
            "eliminate unreachable code (hidden behind soft deopts)")
297
DEFINE_bool(unreachable_code_elimination, true, "eliminate unreachable code")
303 298
DEFINE_bool(track_allocation_sites, true,
304 299
            "Use allocation site info to reduce transitions")
305 300
DEFINE_bool(trace_osr, false, "trace on-stack replacement")
......
316 311
DEFINE_bool(inline_arguments, true, "inline functions with arguments object")
317 312
DEFINE_bool(inline_accessors, true, "inline JavaScript accessors")
318 313
DEFINE_int(loop_weight, 1, "loop weight for representation inference")
314
DEFINE_int(escape_analysis_iterations, 1,
315
           "maximum number of escape analysis fix-point iterations")
319 316

  
320 317
DEFINE_bool(optimize_for_in, true,
321 318
            "optimize functions containing for-in loops")
......
331 328
           "the length of the concurrent compilation queue")
332 329
DEFINE_int(concurrent_recompilation_delay, 0,
333 330
           "artificial compilation delay in ms")
331
DEFINE_bool(block_concurrent_recompilation, false,
332
            "block queued jobs until released")
334 333
DEFINE_bool(concurrent_osr, false,
335 334
            "concurrent on-stack replacement")
335
DEFINE_implication(concurrent_osr, concurrent_recompilation)
336 336

  
337 337
DEFINE_bool(omit_map_checks_for_leaf_maps, true,
338 338
            "do not emit check maps for constant values that have a leaf map, "
......
404 404
DEFINE_string(expose_natives_as, NULL, "expose natives in global object")
405 405
DEFINE_string(expose_debug_as, NULL, "expose debug in global object")
406 406
DEFINE_bool(expose_gc, false, "expose gc extension")
407
DEFINE_string(expose_gc_as,
408
              NULL,
407
DEFINE_string(expose_gc_as, NULL,
409 408
              "expose gc extension under the specified name")
410 409
DEFINE_implication(expose_gc_as, expose_gc)
411 410
DEFINE_bool(expose_externalize_string, false,
......
426 425
DEFINE_bool(trace_codegen, false,
427 426
            "print name of functions for which code is generated")
428 427
DEFINE_bool(trace, false, "trace function calls")
429
DEFINE_bool(mask_constants_with_cookie,
430
            true,
428
DEFINE_bool(mask_constants_with_cookie, true,
431 429
            "use random jit cookie to mask large constants")
432 430

  
433 431
// codegen.cc
......
515 513
            "garbage collect maps from which no objects can be reached")
516 514
DEFINE_bool(weak_embedded_maps_in_optimized_code, true,
517 515
            "make maps embedded in optimized code weak")
516
DEFINE_bool(weak_embedded_objects_in_optimized_code, true,
517
            "make objects embedded in optimized code weak")
518 518
DEFINE_bool(flush_code, true,
519 519
            "flush code that we expect not to use again (during full gc)")
520 520
DEFINE_bool(flush_code_incrementally, true,
......
533 533
DEFINE_bool(concurrent_sweeping, false, "enable concurrent sweeping")
534 534
DEFINE_int(sweeper_threads, 0,
535 535
           "number of parallel and concurrent sweeping threads")
536
DEFINE_bool(parallel_marking, false, "enable parallel marking")
537
DEFINE_int(marking_threads, 0, "number of parallel marking threads")
538 536
#ifdef VERIFY_HEAP
539 537
DEFINE_bool(verify_heap, false, "verify heap pointers before and after GC")
540 538
#endif
541 539

  
540

  
541
// heap-snapshot-generator.cc
542
DEFINE_bool(heap_profiler_trace_objects, false,
543
            "Dump heap object allocations/movements/size_updates")
544

  
545

  
542 546
// v8.cc
543 547
DEFINE_bool(use_idle_notification, true,
544 548
            "Use idle notification to reduce memory footprint.")
545 549
// ic.cc
546 550
DEFINE_bool(use_ic, true, "use inline caching")
547
DEFINE_bool(js_accessor_ics, false, "create ics for js accessors")
548 551

  
549 552
// macro-assembler-ia32.cc
550 553
DEFINE_bool(native_code_counters, false,
......
592 595
            "print stack trace when throwing exceptions")
593 596
DEFINE_bool(preallocate_message_memory, false,
594 597
            "preallocate some memory to build stack traces.")
595
DEFINE_bool(randomize_hashes,
596
            true,
598
DEFINE_bool(randomize_hashes, true,
597 599
            "randomize hashes to avoid predictable hash collisions "
598 600
            "(with snapshots this option cannot override the baked-in seed)")
599
DEFINE_int(hash_seed,
600
           0,
601
DEFINE_int(hash_seed, 0,
601 602
           "Fixed seed to use to hash property keys (0 means random)"
602 603
           "(with snapshots this option cannot override the baked-in seed)")
603 604

  
605
// snapshot-common.cc
606
DEFINE_bool(profile_deserialization, false,
607
            "Print the time it takes to deserialize the snapshot.")
608

  
604 609
// v8.cc
605 610
DEFINE_bool(preemption, false,
606 611
            "activate a 100ms timer that switches between V8 threads")
......
610 615

  
611 616
// Testing flags test/cctest/test-{flags,api,serialization}.cc
612 617
DEFINE_bool(testing_bool_flag, true, "testing_bool_flag")
618
DEFINE_maybe_bool(testing_maybe_bool_flag, "testing_maybe_bool_flag")
613 619
DEFINE_int(testing_int_flag, 13, "testing_int_flag")
614 620
DEFINE_float(testing_float_flag, 2.5, "float-flag")
615 621
DEFINE_string(testing_string_flag, "Hello, world!", "string-flag")
......
626 632
DEFINE_string(extra_code, NULL, "A filename with extra code to be included in"
627 633
                  " the snapshot (mksnapshot only)")
628 634

  
635
// code-stubs-hydrogen.cc
636
DEFINE_bool(profile_hydrogen_code_stub_compilation, false,
637
            "Print the time it takes to lazily compile hydrogen code stubs.")
638

  
629 639
//
630 640
// Dev shell flags
631 641
//
......
642 652
#endif  // ENABLE_DEBUGGER_SUPPORT
643 653

  
644 654
DEFINE_string(map_counters, "", "Map counters to a file")
645
DEFINE_args(js_arguments, JSARGUMENTS_INIT,
655
DEFINE_args(js_arguments,
646 656
            "Pass all remaining arguments to the script. Alias for \"--\".")
647 657

  
648 658
#if defined(WEBOS__)
......
686 696
#endif
687 697

  
688 698
// checks.cc
699
#ifdef ENABLE_SLOW_ASSERTS
689 700
DEFINE_bool(enable_slow_asserts, false,
690 701
            "enable asserts that are slow to execute")
702
#endif
691 703

  
692 704
// codegen-ia32.cc / codegen-arm.cc / macro-assembler-*.cc
693 705
DEFINE_bool(print_source, false, "pretty print source code")
......
724 736
DEFINE_int(print_interface_depth, 5, "depth for printing interfaces")
725 737

  
726 738
// objects.cc
727
DEFINE_bool(trace_normalization,
728
            false,
739
DEFINE_bool(trace_normalization, false,
729 740
            "prints when objects are turned into dictionaries.")
730 741

  
731 742
// runtime.cc
......
739 750
DEFINE_bool(trace_isolates, false, "trace isolate state changes")
740 751

  
741 752
// Regexp
742
DEFINE_bool(regexp_possessive_quantifier,
743
            false,
753
DEFINE_bool(regexp_possessive_quantifier, false,
744 754
            "enable possessive quantifier syntax for testing")
745 755
DEFINE_bool(trace_regexp_bytecodes, false, "trace regexp bytecode execution")
746
DEFINE_bool(trace_regexp_assembler,
747
            false,
756
DEFINE_bool(trace_regexp_assembler, false,
748 757
            "trace regexp macro assembler calls.")
749 758

  
750 759
//
......
773 782
            "Used with --prof, turns on browser-compatible mode for profiling.")
774 783
DEFINE_bool(log_regexp, false, "Log regular expression execution.")
775 784
DEFINE_string(logfile, "v8.log", "Specify the name of the log file.")
785
DEFINE_bool(logfile_per_isolate, true, "Separate log files for each isolate.")
776 786
DEFINE_bool(ll_prof, false, "Enable low-level linux profiler.")
777 787
DEFINE_string(gc_fake_mmap, "/tmp/__v8_gc__",
778 788
              "Specify the name of the file for fake gc mmap used in ll_prof")
......
795 805
// elements.cc
796 806
DEFINE_bool(trace_elements_transitions, false, "trace elements transitions")
797 807

  
808
DEFINE_bool(trace_creation_allocation_sites, false,
809
            "trace the creation of allocation sites")
810

  
798 811
// code-stubs.cc
799 812
DEFINE_bool(print_code_stubs, false, "print code stubs")
800
DEFINE_bool(test_secondary_stub_cache,
801
            false,
813
DEFINE_bool(test_secondary_stub_cache, false,
802 814
            "test secondary stub cache by disabling the primary one")
803 815

  
804
DEFINE_bool(test_primary_stub_cache,
805
            false,
816
DEFINE_bool(test_primary_stub_cache, false,
806 817
            "test primary stub cache by disabling the secondary one")
807 818

  
819

  
808 820
// codegen-ia32.cc / codegen-arm.cc
809 821
DEFINE_bool(print_code, false, "print generated code")
810 822
DEFINE_bool(print_opt_code, false, "print optimized code")
......
812 824
            "printing optimized code based on it")
813 825
DEFINE_bool(print_code_verbose, false, "print more information for code")
814 826
DEFINE_bool(print_builtin_code, false, "print generated code for builtins")
827
DEFINE_bool(emit_opt_code_positions, false,
828
            "annotate optimize code with source code positions")
815 829

  
816 830
#ifdef ENABLE_DISASSEMBLER
831
DEFINE_bool(sodium, false, "print generated code output suitable for use with "
832
            "the Sodium code viewer")
833

  
834
DEFINE_implication(sodium, print_code_stubs)
835
DEFINE_implication(sodium, print_code)
836
DEFINE_implication(sodium, print_opt_code)
837
DEFINE_implication(sodium, emit_opt_code_positions)
838
DEFINE_implication(sodium, code_comments)
839

  
817 840
DEFINE_bool(print_all_code, false, "enable all flags related to printing code")
818 841
DEFINE_implication(print_all_code, print_code)
819 842
DEFINE_implication(print_all_code, print_opt_code)
......
827 850
#endif
828 851
#endif
829 852

  
853
//
854
// Read-only flags
855
//
856
#undef FLAG
857
#define FLAG FLAG_READONLY
858

  
859
// assembler-arm.h
860
DEFINE_bool(enable_ool_constant_pool, false,
861
            "enable use of out-of-line constant pools (ARM only)")
862

  
830 863
// Cleanup...
831 864
#undef FLAG_FULL
832 865
#undef FLAG_READONLY
......
834 867
#undef FLAG_ALIAS
835 868

  
836 869
#undef DEFINE_bool
870
#undef DEFINE_maybe_bool
837 871
#undef DEFINE_int
838 872
#undef DEFINE_string
839 873
#undef DEFINE_float
......
850 884
#undef FLAG_MODE_DEFINE_DEFAULTS
851 885
#undef FLAG_MODE_META
852 886
#undef FLAG_MODE_DEFINE_IMPLICATIONS
887

  
888
#undef COMMA

Also available in: Unified diff