2482 experimental(bool, UseFastUnorderedTimeStamps, false, \ 2483 "Use platform unstable time where supported for timestamps only") \ 2484 \ 2485 product(bool, EnableValhalla, true, \ 2486 "Enable experimental Valhalla features") \ 2487 \ 2488 product(bool, EnableValhallaC1, false, \ 2489 "Enable C1 compiler for Valhalla") \ 2490 \ 2491 product_pd(bool, ValueTypePassFieldsAsArgs, \ 2492 "Pass each value type field as an argument at calls") \ 2493 \ 2494 product_pd(bool, ValueTypeReturnedAsFields, \ 2495 "Return fields instead of a value type reference") \ 2496 \ 2497 develop(bool, StressValueTypeReturnedAsFields, false, \ 2498 "Stress return of fields instead of a value type reference") \ 2499 \ 2500 develop(bool, ScalarizeValueTypes, true, \ 2501 "Scalarize value types in compiled code") \ 2502 2503 2504 2505 // Interface macros 2506 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; 2507 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; 2508 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; 2509 #define DECLARE_PD_DIAGNOSTIC_FLAG(type, name, doc) extern "C" type name; 2510 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name; 2511 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; 2512 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; 2513 #ifdef PRODUCT 2514 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; 2515 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name; 2516 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) const type name = value; 2517 #else 2518 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) extern "C" type name; 2519 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) extern "C" type name; 2520 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) extern "C" type name; 2521 #endif // PRODUCT | 2482 experimental(bool, UseFastUnorderedTimeStamps, false, \ 2483 "Use platform unstable time where supported for timestamps only") \ 2484 \ 2485 product(bool, EnableValhalla, true, \ 2486 "Enable experimental Valhalla features") \ 2487 \ 2488 product(bool, EnableValhallaC1, false, \ 2489 "Enable C1 compiler for Valhalla") \ 2490 \ 2491 product_pd(bool, ValueTypePassFieldsAsArgs, \ 2492 "Pass each value type field as an argument at calls") \ 2493 \ 2494 product_pd(bool, ValueTypeReturnedAsFields, \ 2495 "Return fields instead of a value type reference") \ 2496 \ 2497 develop(bool, StressValueTypeReturnedAsFields, false, \ 2498 "Stress return of fields instead of a value type reference") \ 2499 \ 2500 develop(bool, ScalarizeValueTypes, true, \ 2501 "Scalarize value types in compiled code") \ 2502 \ 2503 product(bool, PrintNewLayout, false, \ 2504 "Print layout compute by new algorithm") \ 2505 \ 2506 product(bool, PrintFlattenableLayouts, false, \ 2507 "Print layout of inline classes and classes with " \ 2508 "flattenable fields") \ 2509 \ 2510 product(bool, UseNewLayout, true, \ 2511 "Use new algorithm to compute layouts") \ 2512 \ 2513 2514 2515 2516 // Interface macros 2517 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; 2518 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; 2519 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; 2520 #define DECLARE_PD_DIAGNOSTIC_FLAG(type, name, doc) extern "C" type name; 2521 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name; 2522 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; 2523 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; 2524 #ifdef PRODUCT 2525 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; 2526 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name; 2527 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) const type name = value; 2528 #else 2529 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) extern "C" type name; 2530 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) extern "C" type name; 2531 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) extern "C" type name; 2532 #endif // PRODUCT |