| OLD | NEW | 
|---|
|  | (Empty) | 
| 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 }, |  | 
| 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 #define DEFINE_bool(nam, def, cmt) FLAG(BOOL, bool, nam, def, cmt) |  | 
| 73 #define DEFINE_int(nam, def, cmt) FLAG(INT, int, nam, def, cmt) |  | 
| 74 #define DEFINE_float(nam, def, cmt) FLAG(FLOAT, double, nam, def, cmt) |  | 
| 75 #define DEFINE_string(nam, def, cmt) FLAG(STRING, const char*, nam, def, cmt) |  | 
| 76 |  | 
| 77 // |  | 
| 78 // Flags in all modes. |  | 
| 79 // |  | 
| 80 #define FLAG FLAG_FULL |  | 
| 81 |  | 
| 82 // assembler-ia32.cc / assembler-arm.cc |  | 
| 83 DEFINE_bool(debug_code, false, |  | 
| 84             "generate extra code (comments, assertions) for debugging") |  | 
| 85 DEFINE_bool(emit_branch_hints, false, "emit branch hints") |  | 
| 86 DEFINE_bool(push_pop_elimination, true, |  | 
| 87             "eliminate redundant push/pops in assembly code") |  | 
| 88 DEFINE_bool(print_push_pop_elimination, false, |  | 
| 89             "print elimination of redundant push/pops in assembly code") |  | 
| 90 DEFINE_bool(eliminate_jumps, true, "eliminate jumps to jumps in assembly code") |  | 
| 91 DEFINE_bool(print_jump_elimination, false, |  | 
| 92             "print elimination of jumps to jumps in assembly code") |  | 
| 93 |  | 
| 94 // bootstrapper.cc |  | 
| 95 DEFINE_string(expose_natives_as, NULL, "expose natives in global object") |  | 
| 96 DEFINE_string(expose_debug_as, NULL, "expose debug in global object") |  | 
| 97 DEFINE_string(natives_file, NULL, "alternative natives file") |  | 
| 98 DEFINE_bool(expose_gc, false, "expose gc extension") |  | 
| 99 |  | 
| 100 // builtins-ia32.cc |  | 
| 101 DEFINE_bool(inline_new, true, "use fast inline allocation") |  | 
| 102 |  | 
| 103 // checks.cc |  | 
| 104 DEFINE_bool(stack_trace_on_abort, true, |  | 
| 105             "print a stack trace if an assertion failure occurs") |  | 
| 106 |  | 
| 107 // codegen-ia32.cc / codegen-arm.cc |  | 
| 108 DEFINE_bool(trace, false, "trace function calls") |  | 
| 109 DEFINE_bool(defer_negation, true, "defer negation operation") |  | 
| 110 DEFINE_bool(check_stack, true, |  | 
| 111             "check stack for overflow, interrupt, breakpoint") |  | 
| 112 |  | 
| 113 // codegen.cc |  | 
| 114 DEFINE_bool(lazy, true, "use lazy compilation") |  | 
| 115 DEFINE_bool(debug_info, true, "add debug information to compiled functions") |  | 
| 116 |  | 
| 117 // compiler.cc |  | 
| 118 DEFINE_bool(strict, false, "strict error checking") |  | 
| 119 DEFINE_int(min_preparse_length, 1024, |  | 
| 120            "Minimum length for automatic enable preparsing") |  | 
| 121 |  | 
| 122 // debug.cc |  | 
| 123 DEFINE_bool(remote_debugging, false, "enable remote debugging") |  | 
| 124 DEFINE_bool(trace_debug_json, false, "trace debugging JSON request/response") |  | 
| 125 |  | 
| 126 // execution.cc |  | 
| 127 DEFINE_bool(call_regexp, false, "allow calls to RegExp objects") |  | 
| 128 |  | 
| 129 // frames.cc |  | 
| 130 DEFINE_int(max_stack_trace_source_length, 300, |  | 
| 131            "maximum length of function source code printed in a stack trace.") |  | 
| 132 |  | 
| 133 // heap.cc |  | 
| 134 DEFINE_int(new_space_size, 0, "size of (each semispace in) the new generation") |  | 
| 135 DEFINE_int(old_space_size, 0, "size of the old generation") |  | 
| 136 DEFINE_bool(gc_global, false, "always perform global GCs") |  | 
| 137 DEFINE_int(gc_interval, -1, "garbage collect after <n> allocations") |  | 
| 138 DEFINE_bool(trace_gc, false, |  | 
| 139             "print one trace line following each garbage collection") |  | 
| 140 |  | 
| 141 // ic.cc |  | 
| 142 DEFINE_bool(use_ic, true, "use inline caching") |  | 
| 143 |  | 
| 144 // macro-assembler-ia32.cc |  | 
| 145 DEFINE_bool(native_code_counters, false, |  | 
| 146             "generate extra code for manipulating stats counters") |  | 
| 147 |  | 
| 148 // mark-compact.cc |  | 
| 149 DEFINE_bool(always_compact, false, "Perform compaction on every full GC") |  | 
| 150 DEFINE_bool(never_compact, false, |  | 
| 151             "Never perform compaction on full GC - testing only") |  | 
| 152 DEFINE_bool(cleanup_ics_at_gc, true, |  | 
| 153             "Flush inline caches prior to mark compact collection.") |  | 
| 154 DEFINE_bool(cleanup_caches_in_maps_at_gc, true, |  | 
| 155             "Flush code caches in maps during mark compact cycle.") |  | 
| 156 |  | 
| 157 // mksnapshot.cc |  | 
| 158 DEFINE_bool(h, false, "print this message") |  | 
| 159 |  | 
| 160 // parser.cc |  | 
| 161 DEFINE_bool(allow_natives_syntax, false, "allow natives syntax") |  | 
| 162 |  | 
| 163 // simulator-arm.cc |  | 
| 164 DEFINE_bool(trace_sim, false, "trace simulator execution") |  | 
| 165 DEFINE_int(stop_sim_at, 0, "Simulator stop after x number of instructions") |  | 
| 166 |  | 
| 167 // top.cc |  | 
| 168 DEFINE_bool(trace_exception, false, |  | 
| 169             "print stack trace when throwing exceptions") |  | 
| 170 DEFINE_bool(preallocate_message_memory, false, |  | 
| 171             "preallocate some memory to build stack traces.") |  | 
| 172 |  | 
| 173 // usage-analyzer.cc |  | 
| 174 DEFINE_bool(usage_computation, true, "compute variable usage counts") |  | 
| 175 |  | 
| 176 // v8.cc |  | 
| 177 DEFINE_bool(preemption, false, |  | 
| 178             "activate a 100ms timer that switches between V8 threads") |  | 
| 179 |  | 
| 180 // Testing flags test/cctest/test-{flags,api,serialization}.cc |  | 
| 181 DEFINE_bool(testing_bool_flag, true, "testing_bool_flag") |  | 
| 182 DEFINE_int(testing_int_flag, 13, "testing_int_flag") |  | 
| 183 DEFINE_float(testing_float_flag, 2.5, "float-flag") |  | 
| 184 DEFINE_string(testing_string_flag, "Hello, world!", "string-flag") |  | 
| 185 DEFINE_int(testing_prng_seed, 42, "Seed used for threading test randomness") |  | 
| 186 #ifdef WIN32 |  | 
| 187 DEFINE_string(testing_serialization_file, "C:\\Windows\\Temp\\serdes", |  | 
| 188               "file in which to testing_serialize heap") |  | 
| 189 #else |  | 
| 190 DEFINE_string(testing_serialization_file, "/tmp/serdes", |  | 
| 191               "file in which to serialize heap") |  | 
| 192 #endif |  | 
| 193 |  | 
| 194 |  | 
| 195 |  | 
| 196 // |  | 
| 197 // Debug only flags |  | 
| 198 // |  | 
| 199 #undef FLAG |  | 
| 200 #ifdef DEBUG |  | 
| 201 #define FLAG FLAG_FULL |  | 
| 202 #else |  | 
| 203 #define FLAG FLAG_READONLY |  | 
| 204 #endif |  | 
| 205 |  | 
| 206 // checks.cc |  | 
| 207 DEFINE_bool(enable_slow_asserts, false, |  | 
| 208             "enable asserts that are slow to execute") |  | 
| 209 |  | 
| 210 // code-stubs.cc |  | 
| 211 DEFINE_bool(print_code_stubs, false, "print code stubs") |  | 
| 212 |  | 
| 213 // codegen-ia32.cc / codegen-arm.cc |  | 
| 214 DEFINE_bool(trace_codegen, false, |  | 
| 215             "print name of functions for which code is generated") |  | 
| 216 DEFINE_bool(print_builtin_code, false, "print generated code for builtins") |  | 
| 217 DEFINE_bool(print_source, false, "pretty print source code") |  | 
| 218 DEFINE_bool(print_builtin_source, false, |  | 
| 219             "pretty print source code for builtins") |  | 
| 220 DEFINE_bool(print_ast, false, "print source AST") |  | 
| 221 DEFINE_bool(print_builtin_ast, false, "print source AST for builtins") |  | 
| 222 DEFINE_bool(trace_calls, false, "trace calls") |  | 
| 223 DEFINE_bool(trace_builtin_calls, false, "trace builtins calls") |  | 
| 224 DEFINE_string(stop_at, "", "function name where to insert a breakpoint") |  | 
| 225 |  | 
| 226 // compiler.cc |  | 
| 227 DEFINE_bool(print_builtin_scopes, false, "print scopes for builtins") |  | 
| 228 DEFINE_bool(print_scopes, false, "print scopes") |  | 
| 229 |  | 
| 230 // contexts.cc |  | 
| 231 DEFINE_bool(trace_contexts, false, "trace contexts operations") |  | 
| 232 |  | 
| 233 // heap.cc |  | 
| 234 DEFINE_bool(gc_greedy, false, "perform GC prior to some allocations") |  | 
| 235 DEFINE_bool(gc_verbose, false, "print stuff during garbage collection") |  | 
| 236 DEFINE_bool(heap_stats, false, "report heap statistics before and after GC") |  | 
| 237 DEFINE_bool(code_stats, false, "report code statistics after GC") |  | 
| 238 DEFINE_bool(verify_heap, false, "verify heap pointers before and after GC") |  | 
| 239 DEFINE_bool(print_handles, false, "report handles after GC") |  | 
| 240 DEFINE_bool(print_global_handles, false, "report global handles after GC") |  | 
| 241 DEFINE_bool(print_rset, false, "print remembered sets before GC") |  | 
| 242 |  | 
| 243 // ic.cc |  | 
| 244 DEFINE_bool(trace_ic, false, "trace inline cache state transitions") |  | 
| 245 |  | 
| 246 // objects.cc |  | 
| 247 DEFINE_bool(trace_normalization, |  | 
| 248             false, |  | 
| 249             "prints when objects are turned into dictionaries.") |  | 
| 250 |  | 
| 251 // runtime.cc |  | 
| 252 DEFINE_bool(trace_lazy, false, "trace lazy compilation") |  | 
| 253 |  | 
| 254 // serialize.cc |  | 
| 255 DEFINE_bool(debug_serialization, false, |  | 
| 256             "write debug information into the snapshot.") |  | 
| 257 |  | 
| 258 // spaces.cc |  | 
| 259 DEFINE_bool(collect_heap_spill_statistics, false, |  | 
| 260             "report heap spill statistics along with heap_stats " |  | 
| 261             "(requires heap_stats)") |  | 
| 262 |  | 
| 263 // |  | 
| 264 // Logging and profiling only flags |  | 
| 265 // |  | 
| 266 #undef FLAG |  | 
| 267 #ifdef ENABLE_LOGGING_AND_PROFILING |  | 
| 268 #define FLAG FLAG_FULL |  | 
| 269 #else |  | 
| 270 #define FLAG FLAG_READONLY |  | 
| 271 #endif |  | 
| 272 |  | 
| 273 // log.cc |  | 
| 274 DEFINE_bool(log, false, |  | 
| 275             "Minimal logging (no API, code, GC, suspect, or handles samples).") |  | 
| 276 DEFINE_bool(log_all, false, "Log all events to the log file.") |  | 
| 277 DEFINE_bool(log_api, false, "Log API events to the log file.") |  | 
| 278 DEFINE_bool(log_code, false, |  | 
| 279             "Log code events to the log file without profiling.") |  | 
| 280 DEFINE_bool(log_gc, false, |  | 
| 281             "Log heap samples on garbage collection for the hp2ps tool.") |  | 
| 282 DEFINE_bool(log_handles, false, "Log global handle events.") |  | 
| 283 DEFINE_bool(log_state_changes, false, "Log state changes.") |  | 
| 284 DEFINE_bool(log_suspect, false, "Log suspect operations.") |  | 
| 285 DEFINE_bool(prof, false, |  | 
| 286             "Log statistical profiling information (implies --log-code).") |  | 
| 287 DEFINE_bool(log_regexp, false, "Log regular expression execution.") |  | 
| 288 DEFINE_bool(sliding_state_window, false, |  | 
| 289             "Update sliding state window counters.") |  | 
| 290 DEFINE_string(logfile, "v8.log", "Specify the name of the log file.") |  | 
| 291 |  | 
| 292 // |  | 
| 293 // Disassembler only flags |  | 
| 294 // |  | 
| 295 #undef FLAG |  | 
| 296 #ifdef ENABLE_DISASSEMBLER |  | 
| 297 #define FLAG FLAG_FULL |  | 
| 298 #else |  | 
| 299 #define FLAG FLAG_READONLY |  | 
| 300 #endif |  | 
| 301 |  | 
| 302 // codegen-ia32.cc / codegen-arm.cc |  | 
| 303 DEFINE_bool(print_code, false, "print generated code") |  | 
| 304 |  | 
| 305 |  | 
| 306 // Cleanup... |  | 
| 307 #undef FLAG_FULL |  | 
| 308 #undef FLAG_READONLY |  | 
| 309 #undef FLAG |  | 
| 310 |  | 
| 311 #undef DEFINE_bool |  | 
| 312 #undef DEFINE_int |  | 
| 313 #undef DEFINE_string |  | 
| 314 |  | 
| 315 #undef FLAG_MODE_DECLARE |  | 
| 316 #undef FLAG_MODE_DEFINE |  | 
| 317 #undef FLAG_MODE_DEFINE_DEFAULTS |  | 
| 318 #undef FLAG_MODE_META |  | 
| OLD | NEW | 
|---|