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 |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 | 149 |
150 // | 150 // |
151 // Flags in all modes. | 151 // Flags in all modes. |
152 // | 152 // |
153 #define FLAG FLAG_FULL | 153 #define FLAG FLAG_FULL |
154 | 154 |
155 // Flags for language modes and experimental language features. | 155 // Flags for language modes and experimental language features. |
156 DEFINE_BOOL(use_strict, false, "enforce strict mode") | 156 DEFINE_BOOL(use_strict, false, "enforce strict mode") |
157 | 157 |
158 DEFINE_BOOL(es_staging, false, "enable upcoming ES6+ features") | 158 DEFINE_BOOL(es_staging, false, "enable upcoming ES6+ features") |
159 DEFINE_BOOL(harmony, false, "enable all harmony features (except proxies)") | 159 DEFINE_BOOL(harmony, false, "enable all completed harmony features") |
160 DEFINE_IMPLICATION(harmony, es_staging) | 160 DEFINE_IMPLICATION(harmony, es_staging) |
| 161 // TODO(rossberg): activate once we have staged scoping: |
| 162 // DEFINE_IMPLICATION(es_staging, harmony) |
161 | 163 |
162 #define HARMONY_FEATURES(V) \ | 164 // Features that are still work in progress (behind individual flags). |
| 165 #define HARMONY_INPROGRESS(V) \ |
163 V(harmony_scoping, "harmony block scoping") \ | 166 V(harmony_scoping, "harmony block scoping") \ |
164 V(harmony_modules, "harmony modules (implies block scoping)") \ | 167 V(harmony_modules, "harmony modules (implies block scoping)") \ |
165 V(harmony_arrays, "harmony arrays") \ | 168 V(harmony_arrays, "harmony arrays") \ |
166 V(harmony_classes, "harmony classes") \ | 169 V(harmony_classes, "harmony classes") \ |
167 V(harmony_object_literals, "harmony object literal extensions") \ | 170 V(harmony_object_literals, "harmony object literal extensions") \ |
168 V(harmony_regexps, "reg-exp related harmony features") \ | 171 V(harmony_regexps, "reg-exp related harmony features") \ |
169 V(harmony_arrow_functions, "harmony arrow functions") \ | 172 V(harmony_arrow_functions, "harmony arrow functions") \ |
170 V(harmony_tostring, "harmony Symbol.toStringTag") | 173 V(harmony_tostring, "harmony Symbol.toStringTag") \ |
| 174 V(harmony_proxies, "harmony proxies") |
171 | 175 |
172 #define STAGED_FEATURES(V) \ | 176 // Features that are complete (but still behind --harmony/es-staging flag). |
| 177 #define HARMONY_STAGED(V) \ |
173 V(harmony_strings, "harmony strings") \ | 178 V(harmony_strings, "harmony strings") \ |
174 V(harmony_numeric_literals, "harmony numeric literals (0o77, 0b11)") | 179 V(harmony_numeric_literals, "harmony numeric literals") |
175 | 180 |
176 #define SHIPPING_FEATURES(V) | 181 // Features that are shipping (turned on by default, but internal flag remains). |
| 182 #define HARMONY_SHIPPING(V) |
177 | 183 |
178 #define FLAG_FEATURES(id, description) \ | 184 // Once a shipping feature has proved stable in the wild, it will be dropped |
| 185 // from HARMONY_SHIPPING, all occurrences of the FLAG_ variable are removed, |
| 186 // and associated tests are moved from the harmony directory to the appropriate |
| 187 // esN directory. |
| 188 |
| 189 |
| 190 #define FLAG_INPROGRESS_FEATURES(id, description) \ |
| 191 DEFINE_BOOL(id, false, "enable " #description) |
| 192 HARMONY_INPROGRESS(FLAG_INPROGRESS_FEATURES) |
| 193 #undef FLAG_INPROGRESS_FEATURES |
| 194 |
| 195 // TODO(rossberg): temporary, remove once we have staged scoping. |
| 196 // After that, --harmony will be synonymous to --es-staging. |
| 197 DEFINE_IMPLICATION(harmony, harmony_scoping) |
| 198 |
| 199 #define FLAG_STAGED_FEATURES(id, description) \ |
179 DEFINE_BOOL(id, false, "enable " #description) \ | 200 DEFINE_BOOL(id, false, "enable " #description) \ |
180 DEFINE_IMPLICATION(harmony, id) | 201 DEFINE_IMPLICATION(es_staging, id) |
181 | 202 HARMONY_STAGED(FLAG_STAGED_FEATURES) |
182 HARMONY_FEATURES(FLAG_FEATURES) | |
183 STAGED_FEATURES(FLAG_FEATURES) | |
184 #undef FLAG_FEATURES | |
185 | |
186 #define FLAG_STAGED_FEATURES(id, description) DEFINE_IMPLICATION(es_staging, id) | |
187 | |
188 STAGED_FEATURES(FLAG_STAGED_FEATURES) | |
189 #undef FLAG_STAGED_FEATURES | 203 #undef FLAG_STAGED_FEATURES |
190 | 204 |
191 #define FLAG_SHIPPING_FEATURES(id, description) \ | 205 #define FLAG_SHIPPING_FEATURES(id, description) \ |
192 DEFINE_BOOL_READONLY(id, true, "enable " #description) | 206 DEFINE_BOOL_READONLY(id, true, "enable " #description) |
| 207 HARMONY_SHIPPING(FLAG_SHIPPING_FEATURES) |
| 208 #undef FLAG_SHIPPING_FEATURES |
193 | 209 |
194 SHIPPING_FEATURES(FLAG_SHIPPING_FEATURES) | |
195 #undef FLAG_SHIPPING_FEATURES | |
196 | 210 |
197 // Feature dependencies. | 211 // Feature dependencies. |
198 DEFINE_IMPLICATION(harmony_modules, harmony_scoping) | 212 DEFINE_IMPLICATION(harmony_modules, harmony_scoping) |
199 DEFINE_IMPLICATION(harmony_classes, harmony_scoping) | 213 DEFINE_IMPLICATION(harmony_classes, harmony_scoping) |
200 DEFINE_IMPLICATION(harmony_classes, harmony_object_literals) | 214 DEFINE_IMPLICATION(harmony_classes, harmony_object_literals) |
201 | 215 |
202 DEFINE_BOOL(harmony_proxies, false, "enable harmony proxies") | |
203 // TODO(rossberg): Reenable when problems are sorted out. | |
204 // DEFINE_IMPLICATION(harmony, harmony_proxies) | |
205 | |
206 | 216 |
207 // Flags for experimental implementation features. | 217 // Flags for experimental implementation features. |
208 DEFINE_BOOL(compiled_keyed_generic_loads, false, | 218 DEFINE_BOOL(compiled_keyed_generic_loads, false, |
209 "use optimizing compiler to generate keyed generic load stubs") | 219 "use optimizing compiler to generate keyed generic load stubs") |
210 DEFINE_BOOL(clever_optimizations, true, | 220 DEFINE_BOOL(clever_optimizations, true, |
211 "Optimize object size, Array shift, DOM strings and string +") | 221 "Optimize object size, Array shift, DOM strings and string +") |
212 // TODO(hpayer): We will remove this flag as soon as we have pretenuring | 222 // TODO(hpayer): We will remove this flag as soon as we have pretenuring |
213 // support for specific allocation sites. | 223 // support for specific allocation sites. |
214 DEFINE_BOOL(pretenuring_call_new, false, "pretenure call new") | 224 DEFINE_BOOL(pretenuring_call_new, false, "pretenure call new") |
215 DEFINE_BOOL(allocation_site_pretenuring, true, | 225 DEFINE_BOOL(allocation_site_pretenuring, true, |
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 #undef DEFINE_ALIAS_FLOAT | 970 #undef DEFINE_ALIAS_FLOAT |
961 #undef DEFINE_ALIAS_ARGS | 971 #undef DEFINE_ALIAS_ARGS |
962 | 972 |
963 #undef FLAG_MODE_DECLARE | 973 #undef FLAG_MODE_DECLARE |
964 #undef FLAG_MODE_DEFINE | 974 #undef FLAG_MODE_DEFINE |
965 #undef FLAG_MODE_DEFINE_DEFAULTS | 975 #undef FLAG_MODE_DEFINE_DEFAULTS |
966 #undef FLAG_MODE_META | 976 #undef FLAG_MODE_META |
967 #undef FLAG_MODE_DEFINE_IMPLICATIONS | 977 #undef FLAG_MODE_DEFINE_IMPLICATIONS |
968 | 978 |
969 #undef COMMA | 979 #undef COMMA |
OLD | NEW |