OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 DEFINE_implication(harmony, harmony_generators) | 183 DEFINE_implication(harmony, harmony_generators) |
184 DEFINE_implication(harmony, harmony_iteration) | 184 DEFINE_implication(harmony, harmony_iteration) |
185 DEFINE_implication(harmony, harmony_numeric_literals) | 185 DEFINE_implication(harmony, harmony_numeric_literals) |
186 DEFINE_implication(harmony_modules, harmony_scoping) | 186 DEFINE_implication(harmony_modules, harmony_scoping) |
187 DEFINE_implication(harmony_observation, harmony_collections) | 187 DEFINE_implication(harmony_observation, harmony_collections) |
188 // TODO[dslomov] add harmony => harmony_typed_arrays | 188 // TODO[dslomov] add harmony => harmony_typed_arrays |
189 | 189 |
190 // Flags for experimental implementation features. | 190 // Flags for experimental implementation features. |
191 DEFINE_bool(packed_arrays, true, "optimizes arrays that have no holes") | 191 DEFINE_bool(packed_arrays, true, "optimizes arrays that have no holes") |
192 DEFINE_bool(smi_only_arrays, true, "tracks arrays with only smi values") | 192 DEFINE_bool(smi_only_arrays, true, "tracks arrays with only smi values") |
193 DEFINE_bool(compiled_transitions, true, "use optimizing compiler to " | |
194 "generate array elements transition stubs") | |
195 DEFINE_bool(compiled_keyed_stores, true, "use optimizing compiler to " | 193 DEFINE_bool(compiled_keyed_stores, true, "use optimizing compiler to " |
196 "generate keyed store stubs") | 194 "generate keyed store stubs") |
197 DEFINE_bool(clever_optimizations, | 195 DEFINE_bool(clever_optimizations, |
198 true, | 196 true, |
199 "Optimize object size, Array shift, DOM strings and string +") | 197 "Optimize object size, Array shift, DOM strings and string +") |
200 DEFINE_bool(pretenuring, true, "allocate objects in old space") | 198 DEFINE_bool(pretenuring, true, "allocate objects in old space") |
201 // TODO(hpayer): We will remove this flag as soon as we have pretenuring | 199 // TODO(hpayer): We will remove this flag as soon as we have pretenuring |
202 // support for specific allocation sites. | 200 // support for specific allocation sites. |
203 DEFINE_bool(pretenuring_call_new, false, "pretenure call new") | 201 DEFINE_bool(pretenuring_call_new, false, "pretenure call new") |
204 DEFINE_bool(track_fields, true, "track fields with only smi values") | 202 DEFINE_bool(track_fields, true, "track fields with only smi values") |
205 DEFINE_bool(track_double_fields, true, "track fields with double values") | 203 DEFINE_bool(track_double_fields, true, "track fields with double values") |
206 DEFINE_bool(track_heap_object_fields, true, "track fields with heap values") | 204 DEFINE_bool(track_heap_object_fields, true, "track fields with heap values") |
207 DEFINE_bool(track_computed_fields, true, "track computed boilerplate fields") | 205 DEFINE_bool(track_computed_fields, true, "track computed boilerplate fields") |
208 DEFINE_implication(track_double_fields, track_fields) | 206 DEFINE_implication(track_double_fields, track_fields) |
209 DEFINE_implication(track_heap_object_fields, track_fields) | 207 DEFINE_implication(track_heap_object_fields, track_fields) |
210 DEFINE_implication(track_computed_fields, track_fields) | 208 DEFINE_implication(track_computed_fields, track_fields) |
| 209 DEFINE_bool(smi_binop, true, "support smi representation in binary operations") |
211 | 210 |
212 // Flags for data representation optimizations | 211 // Flags for data representation optimizations |
213 DEFINE_bool(unbox_double_arrays, true, "automatically unbox arrays of doubles") | 212 DEFINE_bool(unbox_double_arrays, true, "automatically unbox arrays of doubles") |
214 DEFINE_bool(string_slices, true, "use string slices") | 213 DEFINE_bool(string_slices, true, "use string slices") |
215 | 214 |
216 // Flags for Crankshaft. | 215 // Flags for Crankshaft. |
217 DEFINE_bool(crankshaft, true, "use crankshaft") | 216 DEFINE_bool(crankshaft, true, "use crankshaft") |
218 DEFINE_string(hydrogen_filter, "*", "optimization filter") | 217 DEFINE_string(hydrogen_filter, "*", "optimization filter") |
219 DEFINE_bool(use_range, true, "use hydrogen range analysis") | 218 DEFINE_bool(use_range, true, "use hydrogen range analysis") |
220 DEFINE_bool(use_gvn, true, "use hydrogen global value numbering") | 219 DEFINE_bool(use_gvn, true, "use hydrogen global value numbering") |
221 DEFINE_bool(use_canonicalizing, true, "use hydrogen instruction canonicalizing") | 220 DEFINE_bool(use_canonicalizing, true, "use hydrogen instruction canonicalizing") |
222 DEFINE_bool(use_inlining, true, "use function inlining") | 221 DEFINE_bool(use_inlining, true, "use function inlining") |
223 DEFINE_bool(use_escape_analysis, false, "use hydrogen escape analysis") | 222 DEFINE_bool(use_escape_analysis, false, "use hydrogen escape analysis") |
224 DEFINE_bool(use_allocation_folding, true, "use allocation folding") | 223 DEFINE_bool(use_allocation_folding, true, "use allocation folding") |
225 DEFINE_int(max_inlining_levels, 5, "maximum number of inlining levels") | 224 DEFINE_int(max_inlining_levels, 5, "maximum number of inlining levels") |
226 DEFINE_int(max_inlined_source_size, 600, | 225 DEFINE_int(max_inlined_source_size, 600, |
227 "maximum source size in bytes considered for a single inlining") | 226 "maximum source size in bytes considered for a single inlining") |
228 DEFINE_int(max_inlined_nodes, 196, | 227 DEFINE_int(max_inlined_nodes, 196, |
229 "maximum number of AST nodes considered for a single inlining") | 228 "maximum number of AST nodes considered for a single inlining") |
230 DEFINE_int(max_inlined_nodes_cumulative, 400, | 229 DEFINE_int(max_inlined_nodes_cumulative, 400, |
231 "maximum cumulative number of AST nodes considered for inlining") | 230 "maximum cumulative number of AST nodes considered for inlining") |
232 DEFINE_bool(loop_invariant_code_motion, true, "loop invariant code motion") | 231 DEFINE_bool(loop_invariant_code_motion, true, "loop invariant code motion") |
233 DEFINE_bool(fast_math, true, "faster (but maybe less accurate) math functions") | 232 DEFINE_bool(fast_math, true, "faster (but maybe less accurate) math functions") |
234 DEFINE_bool(collect_megamorphic_maps_from_stub_cache, | 233 DEFINE_bool(collect_megamorphic_maps_from_stub_cache, |
235 true, | 234 true, |
236 "crankshaft harvests type feedback from stub cache") | 235 "crankshaft harvests type feedback from stub cache") |
237 DEFINE_bool(hydrogen_stats, false, "print statistics for hydrogen") | 236 DEFINE_bool(hydrogen_stats, false, "print statistics for hydrogen") |
238 DEFINE_bool(trace_hydrogen, false, "trace generated hydrogen to file") | 237 DEFINE_bool(trace_hydrogen, false, "trace generated hydrogen to file") |
239 DEFINE_string(trace_phase, "Z", "trace generated IR for specified phases") | 238 DEFINE_bool(trace_hydrogen_stubs, false, "trace generated hydrogen for stubs") |
| 239 DEFINE_string(trace_hydrogen_file, NULL, "trace hydrogen to given file name") |
| 240 DEFINE_string(trace_phase, "HLZ", "trace generated IR for specified phases") |
240 DEFINE_bool(trace_inlining, false, "trace inlining decisions") | 241 DEFINE_bool(trace_inlining, false, "trace inlining decisions") |
241 DEFINE_bool(trace_alloc, false, "trace register allocator") | 242 DEFINE_bool(trace_alloc, false, "trace register allocator") |
242 DEFINE_bool(trace_all_uses, false, "trace all use positions") | 243 DEFINE_bool(trace_all_uses, false, "trace all use positions") |
243 DEFINE_bool(trace_range, false, "trace range analysis") | 244 DEFINE_bool(trace_range, false, "trace range analysis") |
244 DEFINE_bool(trace_gvn, false, "trace global value numbering") | 245 DEFINE_bool(trace_gvn, false, "trace global value numbering") |
245 DEFINE_bool(trace_representation, false, "trace representation types") | 246 DEFINE_bool(trace_representation, false, "trace representation types") |
246 DEFINE_bool(trace_escape_analysis, false, "trace hydrogen escape analysis") | 247 DEFINE_bool(trace_escape_analysis, false, "trace hydrogen escape analysis") |
247 DEFINE_bool(trace_allocation_folding, false, "trace allocation folding") | 248 DEFINE_bool(trace_allocation_folding, false, "trace allocation folding") |
248 DEFINE_bool(trace_track_allocation_sites, false, | 249 DEFINE_bool(trace_track_allocation_sites, false, |
249 "trace the tracking of allocation sites") | 250 "trace the tracking of allocation sites") |
250 DEFINE_bool(trace_migration, false, "trace object migration") | 251 DEFINE_bool(trace_migration, false, "trace object migration") |
251 DEFINE_bool(trace_generalization, false, "trace map generalization") | 252 DEFINE_bool(trace_generalization, false, "trace map generalization") |
252 DEFINE_bool(stress_pointer_maps, false, "pointer map for every instruction") | 253 DEFINE_bool(stress_pointer_maps, false, "pointer map for every instruction") |
253 DEFINE_bool(stress_environments, false, "environment for every instruction") | 254 DEFINE_bool(stress_environments, false, "environment for every instruction") |
254 DEFINE_int(deopt_every_n_times, | 255 DEFINE_int(deopt_every_n_times, |
255 0, | 256 0, |
256 "deoptimize every n times a deopt point is passed") | 257 "deoptimize every n times a deopt point is passed") |
257 DEFINE_int(deopt_every_n_garbage_collections, | 258 DEFINE_int(deopt_every_n_garbage_collections, |
258 0, | 259 0, |
259 "deoptimize every n garbage collections") | 260 "deoptimize every n garbage collections") |
260 DEFINE_bool(print_deopt_stress, false, "print number of possible deopt points") | 261 DEFINE_bool(print_deopt_stress, false, "print number of possible deopt points") |
261 DEFINE_bool(trap_on_deopt, false, "put a break point before deoptimizing") | 262 DEFINE_bool(trap_on_deopt, false, "put a break point before deoptimizing") |
262 DEFINE_bool(deoptimize_uncommon_cases, true, "deoptimize uncommon cases") | 263 DEFINE_bool(deoptimize_uncommon_cases, true, "deoptimize uncommon cases") |
263 DEFINE_bool(polymorphic_inlining, true, "polymorphic inlining") | 264 DEFINE_bool(polymorphic_inlining, true, "polymorphic inlining") |
264 DEFINE_bool(use_osr, true, "use on-stack replacement") | 265 DEFINE_bool(use_osr, true, "use on-stack replacement") |
265 DEFINE_bool(idefs, false, "use informative definitions") | 266 DEFINE_bool(idefs, false, "use informative definitions") |
266 DEFINE_bool(array_bounds_checks_elimination, true, | 267 DEFINE_bool(array_bounds_checks_elimination, true, |
267 "perform array bounds checks elimination") | 268 "perform array bounds checks elimination") |
| 269 DEFINE_bool(array_bounds_checks_hoisting, false, |
| 270 "perform array bounds checks hoisting") |
268 DEFINE_bool(array_index_dehoisting, true, | 271 DEFINE_bool(array_index_dehoisting, true, |
269 "perform array index dehoisting") | 272 "perform array index dehoisting") |
270 DEFINE_bool(analyze_environment_liveness, true, | 273 DEFINE_bool(analyze_environment_liveness, true, |
271 "analyze liveness of environment slots and zap dead values") | 274 "analyze liveness of environment slots and zap dead values") |
272 DEFINE_bool(dead_code_elimination, true, "use dead code elimination") | 275 DEFINE_bool(dead_code_elimination, true, "use dead code elimination") |
273 DEFINE_bool(fold_constants, true, "use constant folding") | 276 DEFINE_bool(fold_constants, true, "use constant folding") |
274 DEFINE_bool(trace_dead_code_elimination, false, "trace dead code elimination") | 277 DEFINE_bool(trace_dead_code_elimination, false, "trace dead code elimination") |
275 DEFINE_bool(unreachable_code_elimination, false, | 278 DEFINE_bool(unreachable_code_elimination, false, |
276 "eliminate unreachable code (hidden behind soft deopts)") | 279 "eliminate unreachable code (hidden behind soft deopts)") |
277 DEFINE_bool(track_allocation_sites, true, | 280 DEFINE_bool(track_allocation_sites, true, |
(...skipping 22 matching lines...) Expand all Loading... |
300 DEFINE_bool(parallel_recompilation, true, | 303 DEFINE_bool(parallel_recompilation, true, |
301 "optimizing hot functions asynchronously on a separate thread") | 304 "optimizing hot functions asynchronously on a separate thread") |
302 DEFINE_bool(trace_parallel_recompilation, false, "track parallel recompilation") | 305 DEFINE_bool(trace_parallel_recompilation, false, "track parallel recompilation") |
303 DEFINE_int(parallel_recompilation_queue_length, 8, | 306 DEFINE_int(parallel_recompilation_queue_length, 8, |
304 "the length of the parallel compilation queue") | 307 "the length of the parallel compilation queue") |
305 DEFINE_int(parallel_recompilation_delay, 0, | 308 DEFINE_int(parallel_recompilation_delay, 0, |
306 "artificial compilation delay in ms") | 309 "artificial compilation delay in ms") |
307 DEFINE_bool(omit_prototype_checks_for_leaf_maps, true, | 310 DEFINE_bool(omit_prototype_checks_for_leaf_maps, true, |
308 "do not emit prototype checks if all prototypes have leaf maps, " | 311 "do not emit prototype checks if all prototypes have leaf maps, " |
309 "deoptimize the optimized code if the layout of the maps changes.") | 312 "deoptimize the optimized code if the layout of the maps changes.") |
| 313 DEFINE_bool(omit_map_checks_for_leaf_maps, true, |
| 314 "do not emit check maps for constant values that have a leaf map, " |
| 315 "deoptimize the optimized code if the layout of the maps changes.") |
310 | 316 |
311 // Experimental profiler changes. | 317 // Experimental profiler changes. |
312 DEFINE_bool(experimental_profiler, true, "enable all profiler experiments") | 318 DEFINE_bool(experimental_profiler, true, "enable all profiler experiments") |
313 DEFINE_bool(watch_ic_patching, false, "profiler considers IC stability") | 319 DEFINE_bool(watch_ic_patching, false, "profiler considers IC stability") |
314 DEFINE_int(frame_count, 1, "number of stack frames inspected by the profiler") | 320 DEFINE_int(frame_count, 1, "number of stack frames inspected by the profiler") |
315 DEFINE_bool(self_optimization, false, | 321 DEFINE_bool(self_optimization, false, |
316 "primitive functions trigger their own optimization") | 322 "primitive functions trigger their own optimization") |
317 DEFINE_bool(direct_self_opt, false, | 323 DEFINE_bool(direct_self_opt, false, |
318 "call recompile stub directly when self-optimizing") | 324 "call recompile stub directly when self-optimizing") |
319 DEFINE_bool(retry_self_opt, false, "re-try self-optimization if it failed") | 325 DEFINE_bool(retry_self_opt, false, "re-try self-optimization if it failed") |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 DEFINE_bool(log_code, false, | 751 DEFINE_bool(log_code, false, |
746 "Log code events to the log file without profiling.") | 752 "Log code events to the log file without profiling.") |
747 DEFINE_bool(log_gc, false, | 753 DEFINE_bool(log_gc, false, |
748 "Log heap samples on garbage collection for the hp2ps tool.") | 754 "Log heap samples on garbage collection for the hp2ps tool.") |
749 DEFINE_bool(log_handles, false, "Log global handle events.") | 755 DEFINE_bool(log_handles, false, "Log global handle events.") |
750 DEFINE_bool(log_snapshot_positions, false, | 756 DEFINE_bool(log_snapshot_positions, false, |
751 "log positions of (de)serialized objects in the snapshot.") | 757 "log positions of (de)serialized objects in the snapshot.") |
752 DEFINE_bool(log_suspect, false, "Log suspect operations.") | 758 DEFINE_bool(log_suspect, false, "Log suspect operations.") |
753 DEFINE_bool(prof, false, | 759 DEFINE_bool(prof, false, |
754 "Log statistical profiling information (implies --log-code).") | 760 "Log statistical profiling information (implies --log-code).") |
755 DEFINE_bool(prof_auto, true, | |
756 "Used with --prof, starts profiling automatically") | |
757 DEFINE_bool(prof_lazy, false, | 761 DEFINE_bool(prof_lazy, false, |
758 "Used with --prof, only does sampling and logging" | 762 "Used with --prof, only does sampling and logging" |
759 " when profiler is active (implies --noprof_auto).") | 763 " when profiler is active.") |
760 DEFINE_bool(prof_browser_mode, true, | 764 DEFINE_bool(prof_browser_mode, true, |
761 "Used with --prof, turns on browser-compatible mode for profiling.") | 765 "Used with --prof, turns on browser-compatible mode for profiling.") |
762 DEFINE_bool(log_regexp, false, "Log regular expression execution.") | 766 DEFINE_bool(log_regexp, false, "Log regular expression execution.") |
763 DEFINE_string(logfile, "v8.log", "Specify the name of the log file.") | 767 DEFINE_string(logfile, "v8.log", "Specify the name of the log file.") |
764 DEFINE_bool(ll_prof, false, "Enable low-level linux profiler.") | 768 DEFINE_bool(ll_prof, false, "Enable low-level linux profiler.") |
765 DEFINE_string(gc_fake_mmap, "/tmp/__v8_gc__", | 769 DEFINE_string(gc_fake_mmap, "/tmp/__v8_gc__", |
766 "Specify the name of the file for fake gc mmap used in ll_prof") | 770 "Specify the name of the file for fake gc mmap used in ll_prof") |
767 DEFINE_bool(log_internal_timer_events, false, "Time internal events.") | 771 DEFINE_bool(log_internal_timer_events, false, "Time internal events.") |
768 DEFINE_bool(log_timer_events, false, | 772 DEFINE_bool(log_timer_events, false, |
769 "Time events including external callbacks.") | 773 "Time events including external callbacks.") |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 #undef DEFINE_bool | 832 #undef DEFINE_bool |
829 #undef DEFINE_int | 833 #undef DEFINE_int |
830 #undef DEFINE_string | 834 #undef DEFINE_string |
831 #undef DEFINE_implication | 835 #undef DEFINE_implication |
832 | 836 |
833 #undef FLAG_MODE_DECLARE | 837 #undef FLAG_MODE_DECLARE |
834 #undef FLAG_MODE_DEFINE | 838 #undef FLAG_MODE_DEFINE |
835 #undef FLAG_MODE_DEFINE_DEFAULTS | 839 #undef FLAG_MODE_DEFINE_DEFAULTS |
836 #undef FLAG_MODE_META | 840 #undef FLAG_MODE_META |
837 #undef FLAG_MODE_DEFINE_IMPLICATIONS | 841 #undef FLAG_MODE_DEFINE_IMPLICATIONS |
OLD | NEW |