| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file defines all of the flags. It is separated into different section, | 5 // This file defines all of the flags. It is separated into different section, |
| 6 // for Debug, Release, Logging and Profiling, etc. To add a new flag, find the | 6 // for Debug, Release, Logging and Profiling, etc. To add a new flag, find the |
| 7 // correct section, and use one of the DEFINE_ macros, without a trailing ';'. | 7 // correct section, and use one of the DEFINE_ macros, without a trailing ';'. |
| 8 // | 8 // |
| 9 // This include does not have a guard, because it is a template-style include, | 9 // This include does not have a guard, because it is a template-style include, |
| 10 // which can be included multiple times in different modes. It expects to have | 10 // which can be included multiple times in different modes. It expects to have |
| 11 // a mode defined before it's included. The modes are FLAG_MODE_... below: | 11 // a mode defined before it's included. The modes are FLAG_MODE_... below: |
| 12 | 12 |
| 13 #define DEFINE_IMPLICATION(whenflag, thenflag) \ |
| 14 DEFINE_VALUE_IMPLICATION(whenflag, thenflag, true) |
| 15 |
| 16 #define DEFINE_NEG_IMPLICATION(whenflag, thenflag) \ |
| 17 DEFINE_VALUE_IMPLICATION(whenflag, thenflag, false) |
| 18 |
| 13 // We want to declare the names of the variables for the header file. Normally | 19 // We want to declare the names of the variables for the header file. Normally |
| 14 // this will just be an extern declaration, but for a readonly flag we let the | 20 // this will just be an extern declaration, but for a readonly flag we let the |
| 15 // compiler make better optimizations by giving it the value. | 21 // compiler make better optimizations by giving it the value. |
| 16 #if defined(FLAG_MODE_DECLARE) | 22 #if defined(FLAG_MODE_DECLARE) |
| 17 #define FLAG_FULL(ftype, ctype, nam, def, cmt) extern ctype FLAG_##nam; | 23 #define FLAG_FULL(ftype, ctype, nam, def, cmt) extern ctype FLAG_##nam; |
| 18 #define FLAG_READONLY(ftype, ctype, nam, def, cmt) \ | 24 #define FLAG_READONLY(ftype, ctype, nam, def, cmt) \ |
| 19 static ctype const FLAG_##nam = def; | 25 static ctype const FLAG_##nam = def; |
| 20 | 26 |
| 21 // We want to supply the actual storage and value for the flag variable in the | 27 // We want to supply the actual storage and value for the flag variable in the |
| 22 // .cc file. We only do this for writable flags. | 28 // .cc file. We only do this for writable flags. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 38 , | 44 , |
| 39 #define FLAG_ALIAS(ftype, ctype, alias, nam) \ | 45 #define FLAG_ALIAS(ftype, ctype, alias, nam) \ |
| 40 { \ | 46 { \ |
| 41 Flag::TYPE_##ftype, #alias, &FLAG_##nam, &FLAGDEFAULT_##nam, \ | 47 Flag::TYPE_##ftype, #alias, &FLAG_##nam, &FLAGDEFAULT_##nam, \ |
| 42 "alias for --" #nam, false \ | 48 "alias for --" #nam, false \ |
| 43 } \ | 49 } \ |
| 44 , | 50 , |
| 45 | 51 |
| 46 // We produce the code to set flags when it is implied by another flag. | 52 // We produce the code to set flags when it is implied by another flag. |
| 47 #elif defined(FLAG_MODE_DEFINE_IMPLICATIONS) | 53 #elif defined(FLAG_MODE_DEFINE_IMPLICATIONS) |
| 48 #define DEFINE_IMPLICATION(whenflag, thenflag) \ | 54 #define DEFINE_VALUE_IMPLICATION(whenflag, thenflag, value) \ |
| 49 if (FLAG_##whenflag) FLAG_##thenflag = true; | 55 if (FLAG_##whenflag) FLAG_##thenflag = value; |
| 50 | |
| 51 #define DEFINE_NEG_IMPLICATION(whenflag, thenflag) \ | |
| 52 if (FLAG_##whenflag) FLAG_##thenflag = false; | |
| 53 | 56 |
| 54 #else | 57 #else |
| 55 #error No mode supplied when including flags.defs | 58 #error No mode supplied when including flags.defs |
| 56 #endif | 59 #endif |
| 57 | 60 |
| 58 // Dummy defines for modes where it is not relevant. | 61 // Dummy defines for modes where it is not relevant. |
| 59 #ifndef FLAG_FULL | 62 #ifndef FLAG_FULL |
| 60 #define FLAG_FULL(ftype, ctype, nam, def, cmt) | 63 #define FLAG_FULL(ftype, ctype, nam, def, cmt) |
| 61 #endif | 64 #endif |
| 62 | 65 |
| 63 #ifndef FLAG_READONLY | 66 #ifndef FLAG_READONLY |
| 64 #define FLAG_READONLY(ftype, ctype, nam, def, cmt) | 67 #define FLAG_READONLY(ftype, ctype, nam, def, cmt) |
| 65 #endif | 68 #endif |
| 66 | 69 |
| 67 #ifndef FLAG_ALIAS | 70 #ifndef FLAG_ALIAS |
| 68 #define FLAG_ALIAS(ftype, ctype, alias, nam) | 71 #define FLAG_ALIAS(ftype, ctype, alias, nam) |
| 69 #endif | 72 #endif |
| 70 | 73 |
| 71 #ifndef DEFINE_IMPLICATION | 74 #ifndef DEFINE_VALUE_IMPLICATION |
| 72 #define DEFINE_IMPLICATION(whenflag, thenflag) | 75 #define DEFINE_VALUE_IMPLICATION(whenflag, thenflag, value) |
| 73 #endif | |
| 74 | |
| 75 #ifndef DEFINE_NEG_IMPLICATION | |
| 76 #define DEFINE_NEG_IMPLICATION(whenflag, thenflag) | |
| 77 #endif | 76 #endif |
| 78 | 77 |
| 79 #define COMMA , | 78 #define COMMA , |
| 80 | 79 |
| 81 #ifdef FLAG_MODE_DECLARE | 80 #ifdef FLAG_MODE_DECLARE |
| 82 // Structure used to hold a collection of arguments to the JavaScript code. | 81 // Structure used to hold a collection of arguments to the JavaScript code. |
| 83 struct JSArguments { | 82 struct JSArguments { |
| 84 public: | 83 public: |
| 85 inline const char*& operator[](int idx) const { return argv[idx]; } | 84 inline const char*& operator[](int idx) const { return argv[idx]; } |
| 86 static JSArguments Create(int argc, const char** argv) { | 85 static JSArguments Create(int argc, const char** argv) { |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 DEFINE_IMPLICATION(track_field_types, track_fields) | 206 DEFINE_IMPLICATION(track_field_types, track_fields) |
| 208 DEFINE_IMPLICATION(track_field_types, track_heap_object_fields) | 207 DEFINE_IMPLICATION(track_field_types, track_heap_object_fields) |
| 209 DEFINE_BOOL(smi_binop, true, "support smi representation in binary operations") | 208 DEFINE_BOOL(smi_binop, true, "support smi representation in binary operations") |
| 210 DEFINE_BOOL(vector_ics, false, "support vector-based ics") | 209 DEFINE_BOOL(vector_ics, false, "support vector-based ics") |
| 211 | 210 |
| 212 // Flags for optimization types. | 211 // Flags for optimization types. |
| 213 DEFINE_BOOL(optimize_for_size, false, | 212 DEFINE_BOOL(optimize_for_size, false, |
| 214 "Enables optimizations which favor memory size over execution " | 213 "Enables optimizations which favor memory size over execution " |
| 215 "speed.") | 214 "speed.") |
| 216 | 215 |
| 216 DEFINE_VALUE_IMPLICATION(optimize_for_size, max_semi_space_size, 1) |
| 217 |
| 217 // Flags for data representation optimizations | 218 // Flags for data representation optimizations |
| 218 DEFINE_BOOL(unbox_double_arrays, true, "automatically unbox arrays of doubles") | 219 DEFINE_BOOL(unbox_double_arrays, true, "automatically unbox arrays of doubles") |
| 219 DEFINE_BOOL(string_slices, true, "use string slices") | 220 DEFINE_BOOL(string_slices, true, "use string slices") |
| 220 | 221 |
| 221 // Flags for Crankshaft. | 222 // Flags for Crankshaft. |
| 222 DEFINE_BOOL(crankshaft, true, "use crankshaft") | 223 DEFINE_BOOL(crankshaft, true, "use crankshaft") |
| 223 DEFINE_STRING(hydrogen_filter, "*", "optimization filter") | 224 DEFINE_STRING(hydrogen_filter, "*", "optimization filter") |
| 224 DEFINE_BOOL(use_gvn, true, "use hydrogen global value numbering") | 225 DEFINE_BOOL(use_gvn, true, "use hydrogen global value numbering") |
| 225 DEFINE_INT(gvn_iterations, 3, "maximum number of GVN fix-point iterations") | 226 DEFINE_INT(gvn_iterations, 3, "maximum number of GVN fix-point iterations") |
| 226 DEFINE_BOOL(use_canonicalizing, true, "use hydrogen instruction canonicalizing") | 227 DEFINE_BOOL(use_canonicalizing, true, "use hydrogen instruction canonicalizing") |
| (...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 922 #undef FLAG_ALIAS | 923 #undef FLAG_ALIAS |
| 923 | 924 |
| 924 #undef DEFINE_BOOL | 925 #undef DEFINE_BOOL |
| 925 #undef DEFINE_MAYBE_BOOL | 926 #undef DEFINE_MAYBE_BOOL |
| 926 #undef DEFINE_INT | 927 #undef DEFINE_INT |
| 927 #undef DEFINE_STRING | 928 #undef DEFINE_STRING |
| 928 #undef DEFINE_FLOAT | 929 #undef DEFINE_FLOAT |
| 929 #undef DEFINE_ARGS | 930 #undef DEFINE_ARGS |
| 930 #undef DEFINE_IMPLICATION | 931 #undef DEFINE_IMPLICATION |
| 931 #undef DEFINE_NEG_IMPLICATION | 932 #undef DEFINE_NEG_IMPLICATION |
| 933 #undef DEFINE_VALUE_IMPLICATION |
| 932 #undef DEFINE_ALIAS_BOOL | 934 #undef DEFINE_ALIAS_BOOL |
| 933 #undef DEFINE_ALIAS_INT | 935 #undef DEFINE_ALIAS_INT |
| 934 #undef DEFINE_ALIAS_STRING | 936 #undef DEFINE_ALIAS_STRING |
| 935 #undef DEFINE_ALIAS_FLOAT | 937 #undef DEFINE_ALIAS_FLOAT |
| 936 #undef DEFINE_ALIAS_ARGS | 938 #undef DEFINE_ALIAS_ARGS |
| 937 | 939 |
| 938 #undef FLAG_MODE_DECLARE | 940 #undef FLAG_MODE_DECLARE |
| 939 #undef FLAG_MODE_DEFINE | 941 #undef FLAG_MODE_DEFINE |
| 940 #undef FLAG_MODE_DEFINE_DEFAULTS | 942 #undef FLAG_MODE_DEFINE_DEFAULTS |
| 941 #undef FLAG_MODE_META | 943 #undef FLAG_MODE_META |
| 942 #undef FLAG_MODE_DEFINE_IMPLICATIONS | 944 #undef FLAG_MODE_DEFINE_IMPLICATIONS |
| 943 | 945 |
| 944 #undef COMMA | 946 #undef COMMA |
| OLD | NEW |