| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| #ifndef VM_FLAG_LIST_H_ |
| #define VM_FLAG_LIST_H_ |
| |
| // List of all flags in the VM. |
| // Flags can be one of three categories: |
| // * P roduct flags: Can be set in any of the deployment modes, including in |
| // production. |
| // * D ebug flags: Can only be set in debug VMs, which also have assertions |
| // enabled. |
| // * R elease flags: Generally available flags except when building product. |
| // * pre C ompile flags: Generally available flags except when building product |
| // or precompiled runtime. |
| // |
| // Usage: |
| // P(name, type, default_value, comment) |
| // D(name, type, default_value, comment) |
| // R(name, product_value, type, default_value, comment) |
| // C(name, precompiled_value, product_value, type, default_value, comment) |
| #define FLAG_LIST(P, R, D, C) \ |
| C(allow_absolute_addresses, false, true, bool, true, \ |
| "Allow embedding absolute addresses in generated code.") \ |
| C(always_megamorphic_calls, true, false, bool, false, \ |
| "Instance call always as megamorphic.") \ |
| C(background_compilation, false, false, bool, false, \ |
| "Run optimizing compilation in background") \ |
| C(collect_code, false, true, bool, true, \ |
| "Attempt to GC infrequently used code.") \ |
| C(collect_dynamic_function_names, true, false, bool, false, \ |
| "Collects all dynamic function names to identify unique targets") \ |
| R(dedup_instructions, true, bool, false, \ |
| "Canonicalize instructions when precompiling.") \ |
| C(deoptimize_alot, false, false, bool, false, \ |
| "Deoptimizes we are about to return to Dart code from native entries.") \ |
| C(deoptimize_every, 0, 0, int, 0, \ |
| "Deoptimize on every N stack overflow checks") \ |
| R(disable_alloc_stubs_after_gc, false, bool, false, \ |
| "Stress testing flag.") \ |
| R(disassemble, false, bool, false, \ |
| "Disassemble dart code.") \ |
| R(disassemble_optimized, false, bool, false, \ |
| "Disassemble optimized code.") \ |
| R(dump_symbol_stats, false, bool, false, \ |
| "Dump symbol table statistics") \ |
| C(emit_edge_counters, false, true, bool, true, \ |
| "Emit edge counters") \ |
| R(enable_asserts, false, bool, false, \ |
| "Enable assert statements.") \ |
| C(enable_mirrors, false, false, bool, true, \ |
| "Disable to make importing dart:mirrors an error.") \ |
| R(enable_type_checks, false, bool, false, \ |
| "Enable type checks.") \ |
| R(error_on_bad_override, false, bool, false, \ |
| "Report error for bad overrides.") \ |
| R(error_on_bad_type, false, bool, false, \ |
| "Report error for malformed types.") \ |
| C(fields_may_be_reset, true, false, bool, false, \ |
| "Don't optimize away static field initialization") \ |
| C(force_clone_compiler_objects, false, false, bool, false, \ |
| "Force cloning of objects needed in compiler (ICData and Field).") \ |
| R(gc_at_alloc, false, bool, false, \ |
| "GC at every allocation.") \ |
| P(getter_setter_ratio, int, 13, \ |
| "Ratio of getter/setter usage used for double field unboxing heuristics") \ |
| P(guess_icdata_cid, bool, true, \ |
| "Artificially create type feedback for arithmetic etc. operations") \ |
| C(ic_range_profiling, false, true, bool, true, \ |
| "Generate special IC stubs collecting range information ") \ |
| C(interpret_irregexp, true, false, bool, false, \ |
| "Use irregexp bytecode interpreter") \ |
| C(lazy_dispatchers, false, true, bool, true, \ |
| "Generate dispatchers lazily") \ |
| C(link_natives_lazily, true, false, bool, false, \ |
| "Link native calls lazily") \ |
| C(load_deferred_eagerly, true, true, bool, false, \ |
| "Load deferred libraries eagerly.") \ |
| P(max_polymorphic_checks, int, 4, \ |
| "Maximum number of polymorphic check, otherwise it is megamorphic.") \ |
| P(max_equality_polymorphic_checks, int, 32, \ |
| "Maximum number of polymorphic checks in equality operator,") \ |
| P(merge_sin_cos, bool, false, \ |
| "Merge sin/cos into sincos") \ |
| P(new_gen_ext_limit, int, 64, \ |
| "maximum total external size (MB) in new gen before triggering GC") \ |
| C(optimization_counter_threshold, -1, 30000, int, 30000, \ |
| "Function's usage-counter value before it is optimized, -1 means never") \ |
| C(polymorphic_with_deopt, false, true, bool, true, \ |
| "Polymorphic calls with deoptimization / megamorphic call") \ |
| C(precompiled_mode, true, false, bool, false, \ |
| "Precompilation compiler/runtime mode") \ |
| R(pretenure_all, false, bool, false, \ |
| "Global pretenuring (for testing).") \ |
| P(pretenure_interval, int, 10, \ |
| "Back off pretenuring after this many cycles.") \ |
| P(pretenure_threshold, int, 98, \ |
| "Trigger pretenuring when this many percent are promoted.") \ |
| C(print_stop_message, false, false, bool, false, \ |
| "Print stop message.") \ |
| R(profiler, false, bool, true, \ |
| "Enable the profiler.") \ |
| R(support_ast_printer, false, bool, true, \ |
| "Support the AST printer.") \ |
| R(support_compiler_stats, false, bool, true, \ |
| "Support compiler stats.") \ |
| R(support_debugger, false, bool, true, \ |
| "Support the debugger.") \ |
| R(support_disassembler, false, bool, true, \ |
| "Support the disassembler.") \ |
| R(support_il_printer, false, bool, true, \ |
| "Support the IL printer.") \ |
| R(support_service, false, bool, true, \ |
| "Support the service protocol.") \ |
| R(support_coverage, false, bool, true, \ |
| "Support code coverage.") \ |
| R(support_timeline, false, bool, true, \ |
| "Support timeline.") \ |
| D(trace_cha, bool, false, \ |
| "Trace CHA operations") \ |
| D(trace_field_guards, bool, false, \ |
| "Trace changes in field's cids.") \ |
| D(trace_handles, bool, false, \ |
| "Traces allocation of handles.") \ |
| D(trace_optimization, bool, false, \ |
| "Print optimization details."); \ |
| D(trace_zones, bool, false, \ |
| "Traces allocation sizes in the zone.") \ |
| P(truncating_left_shift, bool, true, \ |
| "Optimize left shift to truncate if possible") \ |
| C(use_cha_deopt, false, true, bool, true, \ |
| "Use class hierarchy analysis even if it can cause deoptimization.") \ |
| C(use_field_guards, false, true, bool, true, \ |
| "Use field guards and track field types") \ |
| C(use_osr, false, true, bool, true, \ |
| "Use OSR") \ |
| P(verbose_gc, bool, false, \ |
| "Enables verbose GC.") \ |
| P(verbose_gc_hdr, int, 40, \ |
| "Print verbose GC header interval.") \ |
| R(verify_after_gc, false, bool, false, \ |
| "Enables heap verification after GC.") \ |
| R(verify_before_gc, false, bool, false, \ |
| "Enables heap verification before GC.") \ |
| |
| #endif // VM_FLAG_LIST_H_ |