src/share/vm/runtime/globals.hpp

Print this page




 605 //    The list of product_rw flags are internal/private flags which
 606 //    may be changed/removed in a future release.  It can be set
 607 //    through the management interface to get/set value
 608 //    when the name of flag is supplied.
 609 //
 610 //    A flag can be made as "product_rw" only if
 611 //    - the VM implementation supports dynamic setting of the flag.
 612 //      This implies that the VM must *always* query the flag variable
 613 //      and not reuse state related to the flag state at any given time.
 614 //
 615 // Note that when there is a need to support develop flags to be writeable,
 616 // it can be done in the same way as product_rw.
 617 //
 618 // range is a macro that will expand to min and max arguments for range
 619 //    checking code if provided - see commandLineFlagRangeList.hpp
 620 //
 621 // constraint is a macro that will expand to custom function call
 622 //    for constraint checking if provided - see commandLineFlagConstraintList.hpp
 623 //
 624 
 625 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product, range, constraint) \
 626                                                                             \
 627   lp64_product(bool, UseCompressedOops, false,                              \
 628           "Use 32-bit object references in 64-bit VM. "                     \
 629           "lp64_product means flag is always constant in 32 bit VM")        \
 630                                                                             \
 631   lp64_product(bool, UseCompressedClassPointers, false,                     \
 632           "Use 32-bit class pointers in 64-bit VM. "                        \
 633           "lp64_product means flag is always constant in 32 bit VM")        \
 634                                                                             \
 635   notproduct(bool, CheckCompressedOops, true,                               \
 636           "Generate checks in encoding/decoding code in debug VM")          \
 637                                                                             \
 638   product(uintx, HeapSearchSteps, 3 PPC64_ONLY(+17),                        \
 639           "Heap allocation steps through preferred address regions to find" \
 640           " where it can allocate the heap. Number of steps to take per "   \
 641           "region.")                                                        \
 642           range(1, max_uintx)                                               \
 643                                                                             \
 644   lp64_product(intx, ObjectAlignmentInBytes, 8,                             \
 645           "Default object alignment in bytes, 8 is minimum")                \


2484                                                                             \
2485   product(intx, CompilationPolicyChoice, 0,                                 \
2486           "which compilation policy (0-3)")                                 \
2487           range(0, 3)                                                       \
2488                                                                             \
2489   develop(bool, UseStackBanging, true,                                      \
2490           "use stack banging for stack overflow checks (required for "      \
2491           "proper StackOverflow handling; disable only to measure cost "    \
2492           "of stackbanging)")                                               \
2493                                                                             \
2494   develop(bool, UseStrictFP, true,                                          \
2495           "use strict fp if modifier strictfp is set")                      \
2496                                                                             \
2497   develop(bool, GenerateSynchronizationCode, true,                          \
2498           "generate locking/unlocking code for synchronized methods and "   \
2499           "monitors")                                                       \
2500                                                                             \
2501   develop(bool, GenerateRangeChecks, true,                                  \
2502           "Generate range checks for array accesses")                       \
2503                                                                             \
2504   develop_pd(bool, ImplicitNullChecks,                                      \
2505           "Generate code for implicit null checks")                         \
2506                                                                             \
2507   product_pd(bool, TrapBasedNullChecks,                                     \
2508           "Generate code for null checks that uses a cmp and trap "         \
2509           "instruction raising SIGTRAP.  This is only used if an access to" \
2510           "null (+offset) will not raise a SIGSEGV, i.e.,"                  \
2511           "ImplicitNullChecks don't work (PPC64).")                         \
2512                                                                             \
2513   product(bool, PrintSafepointStatistics, false,                            \
2514           "Print statistics about safepoint synchronization")               \
2515                                                                             \
2516   product(intx, PrintSafepointStatisticsCount, 300,                         \
2517           "Total number of safepoint statistics collected "                 \
2518           "before printing them out")                                       \
2519           range(1, max_intx)                                                \
2520                                                                             \
2521   product(intx, PrintSafepointStatisticsTimeout,  -1,                       \
2522           "Print safepoint statistics only when safepoint takes "           \
2523           "more than PrintSafepointSatisticsTimeout in millis")             \
2524   LP64_ONLY(range(-1, max_intx/MICROUNITS))                                 \


3118   product(intx, PerMethodTrapLimit,  100,                                   \
3119           "Limit on traps (of one kind) in a method (includes inlines)")    \
3120           range(0, max_jint)                                                \
3121                                                                             \
3122   experimental(intx, PerMethodSpecTrapLimit,  5000,                         \
3123           "Limit on speculative traps (of one kind) in a method "           \
3124           "(includes inlines)")                                             \
3125           range(0, max_jint)                                                \
3126                                                                             \
3127   product(intx, PerBytecodeTrapLimit,  4,                                   \
3128           "Limit on traps (of one kind) at a particular BCI")               \
3129           range(0, max_jint)                                                \
3130                                                                             \
3131   experimental(intx, SpecTrapLimitExtraEntries,  3,                         \
3132           "Extra method data trap entries for speculation")                 \
3133                                                                             \
3134   develop(intx, InlineFrequencyRatio,    20,                                \
3135           "Ratio of call site execution to caller method invocation")       \
3136           range(0, max_jint)                                                \
3137                                                                             \
3138   develop_pd(intx, InlineFrequencyCount,                                    \
3139           "Count of call site execution necessary to trigger frequent "     \
3140           "inlining")                                                       \
3141           range(0, max_jint)                                                \
3142                                                                             \
3143   develop(intx, InlineThrowCount,    50,                                    \
3144           "Force inlining of interpreted methods that throw this often")    \
3145           range(0, max_jint)                                                \
3146                                                                             \
3147   develop(intx, InlineThrowMaxSize,   200,                                  \
3148           "Force inlining of throwing methods smaller than this")           \
3149           range(0, max_jint)                                                \
3150                                                                             \
3151   develop(intx, ProfilerNodeSize,  1024,                                    \
3152           "Size in K to allocate for the Profile Nodes of each thread")     \
3153           range(0, 1024)                                                    \
3154                                                                             \
3155   /* gc parameters */                                                       \
3156   product(size_t, InitialHeapSize, 0,                                       \
3157           "Initial heap size (in bytes); zero means use ergonomics")        \
3158           constraint(InitialHeapSizeConstraintFunc,AfterErgo)               \


4099   diagnostic(bool, UseUnalignedAccesses, false,                             \
4100           "Use unaligned memory accesses in Unsafe")                        \
4101                                                                             \
4102   product_pd(bool, PreserveFramePointer,                                    \
4103              "Use the FP register for holding the frame pointer "           \
4104              "and not as a general purpose register.")                      \
4105                                                                             \
4106   diagnostic(bool, CheckIntrinsics, true,                                   \
4107              "When a class C is loaded, check that "                        \
4108              "(1) all intrinsics defined by the VM for class C are present "\
4109              "in the loaded class file and are marked with the "            \
4110              "@HotSpotIntrinsicCandidate annotation, that "                 \
4111              "(2) there is an intrinsic registered for all loaded methods " \
4112              "that are annotated with the @HotSpotIntrinsicCandidate "      \
4113              "annotation, and that "                                        \
4114              "(3) no orphan methods exist for class C (i.e., methods for "  \
4115              "which the VM declares an intrinsic but that are not declared "\
4116              "in the loaded class C. "                                      \
4117              "Check (3) is available only in debug builds.")                \
4118                                                                             \
4119   develop_pd(intx, InitArrayShortSize,                                      \
4120           "Threshold small size (in bytes) for clearing arrays. "           \
4121           "Anything this size or smaller may get converted to discrete "    \
4122           "scalar stores.")                                                 \
4123           range(0, max_intx)                                                \
4124           constraint(InitArrayShortSizeConstraintFunc, AfterErgo)           \
4125                                                                             \
4126   diagnostic(bool, CompilerDirectivesIgnoreCompileCommands, false,          \
4127              "Disable backwards compatibility for compile commands.")       \
4128                                                                             \
4129   diagnostic(bool, CompilerDirectivesPrint, false,                          \
4130              "Print compiler directives on installation.")                  \
4131   diagnostic(int,  CompilerDirectivesLimit, 50,                             \
4132              "Limit on number of compiler directives.")
4133 
4134 
4135 /*
4136  *  Macros for factoring of globals
4137  */
4138 
4139 // Interface macros
4140 #define DECLARE_PRODUCT_FLAG(type, name, value, doc)      extern "C" type name;
4141 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc)          extern "C" type name;
4142 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc)   extern "C" type name;

4143 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
4144 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc)   extern "C" type name;
4145 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc)   extern "C" type name;
4146 #ifdef PRODUCT
4147 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)    const type name = value;
4148 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)        const type name = pd_##name;
4149 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)   const type name = value;
4150 #else
4151 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)    extern "C" type name;
4152 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)        extern "C" type name;
4153 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)   extern "C" type name;
4154 #endif // PRODUCT
4155 // Special LP64 flags, product only needed for now.
4156 #ifdef _LP64
4157 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
4158 #else
4159 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value;
4160 #endif // _LP64
4161 
4162 // Implementation macros
4163 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc)      type name = value;
4164 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc)          type name = pd_##name;
4165 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc)   type name = value;

4166 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value;
4167 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc)   type name = value;
4168 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc)   type name = value;
4169 #ifdef PRODUCT
4170 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc)
4171 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)
4172 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)
4173 #else
4174 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc)    type name = value;
4175 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)        type name = pd_##name;
4176 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)   type name = value;
4177 #endif // PRODUCT
4178 #ifdef _LP64
4179 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value;
4180 #else
4181 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */
4182 #endif // _LP64
4183 
4184 // Only materialize src code for range checking when required, ignore otherwise
4185 #define IGNORE_RANGE(a, b)
4186 // Only materialize src code for contraint checking when required, ignore otherwise
4187 #define IGNORE_CONSTRAINT(func,type)
4188 
4189 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, \
4190               DECLARE_PD_DEVELOPER_FLAG, \
4191               DECLARE_PRODUCT_FLAG, \
4192               DECLARE_PD_PRODUCT_FLAG, \
4193               DECLARE_DIAGNOSTIC_FLAG, \

4194               DECLARE_EXPERIMENTAL_FLAG, \
4195               DECLARE_NOTPRODUCT_FLAG, \
4196               DECLARE_MANAGEABLE_FLAG, \
4197               DECLARE_PRODUCT_RW_FLAG, \
4198               DECLARE_LP64_PRODUCT_FLAG, \
4199               IGNORE_RANGE, \
4200               IGNORE_CONSTRAINT)
4201 
4202 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, \
4203                  DECLARE_PD_DEVELOPER_FLAG, \
4204                  DECLARE_PRODUCT_FLAG, \
4205                  DECLARE_PD_PRODUCT_FLAG, \
4206                  DECLARE_DIAGNOSTIC_FLAG, \

4207                  DECLARE_NOTPRODUCT_FLAG, \
4208                  IGNORE_RANGE, \
4209                  IGNORE_CONSTRAINT)
4210 
4211 ARCH_FLAGS(DECLARE_DEVELOPER_FLAG, \
4212            DECLARE_PRODUCT_FLAG, \
4213            DECLARE_DIAGNOSTIC_FLAG, \
4214            DECLARE_EXPERIMENTAL_FLAG, \
4215            DECLARE_NOTPRODUCT_FLAG, \
4216            IGNORE_RANGE, \
4217            IGNORE_CONSTRAINT)
4218 
4219 // Extensions
4220 
4221 #include "runtime/globals_ext.hpp"
4222 
4223 #endif // SHARE_VM_RUNTIME_GLOBALS_HPP


 605 //    The list of product_rw flags are internal/private flags which
 606 //    may be changed/removed in a future release.  It can be set
 607 //    through the management interface to get/set value
 608 //    when the name of flag is supplied.
 609 //
 610 //    A flag can be made as "product_rw" only if
 611 //    - the VM implementation supports dynamic setting of the flag.
 612 //      This implies that the VM must *always* query the flag variable
 613 //      and not reuse state related to the flag state at any given time.
 614 //
 615 // Note that when there is a need to support develop flags to be writeable,
 616 // it can be done in the same way as product_rw.
 617 //
 618 // range is a macro that will expand to min and max arguments for range
 619 //    checking code if provided - see commandLineFlagRangeList.hpp
 620 //
 621 // constraint is a macro that will expand to custom function call
 622 //    for constraint checking if provided - see commandLineFlagConstraintList.hpp
 623 //
 624 
 625 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, diagnostic_pd, experimental, notproduct, manageable, product_rw, lp64_product, range, constraint) \
 626                                                                             \
 627   lp64_product(bool, UseCompressedOops, false,                              \
 628           "Use 32-bit object references in 64-bit VM. "                     \
 629           "lp64_product means flag is always constant in 32 bit VM")        \
 630                                                                             \
 631   lp64_product(bool, UseCompressedClassPointers, false,                     \
 632           "Use 32-bit class pointers in 64-bit VM. "                        \
 633           "lp64_product means flag is always constant in 32 bit VM")        \
 634                                                                             \
 635   notproduct(bool, CheckCompressedOops, true,                               \
 636           "Generate checks in encoding/decoding code in debug VM")          \
 637                                                                             \
 638   product(uintx, HeapSearchSteps, 3 PPC64_ONLY(+17),                        \
 639           "Heap allocation steps through preferred address regions to find" \
 640           " where it can allocate the heap. Number of steps to take per "   \
 641           "region.")                                                        \
 642           range(1, max_uintx)                                               \
 643                                                                             \
 644   lp64_product(intx, ObjectAlignmentInBytes, 8,                             \
 645           "Default object alignment in bytes, 8 is minimum")                \


2484                                                                             \
2485   product(intx, CompilationPolicyChoice, 0,                                 \
2486           "which compilation policy (0-3)")                                 \
2487           range(0, 3)                                                       \
2488                                                                             \
2489   develop(bool, UseStackBanging, true,                                      \
2490           "use stack banging for stack overflow checks (required for "      \
2491           "proper StackOverflow handling; disable only to measure cost "    \
2492           "of stackbanging)")                                               \
2493                                                                             \
2494   develop(bool, UseStrictFP, true,                                          \
2495           "use strict fp if modifier strictfp is set")                      \
2496                                                                             \
2497   develop(bool, GenerateSynchronizationCode, true,                          \
2498           "generate locking/unlocking code for synchronized methods and "   \
2499           "monitors")                                                       \
2500                                                                             \
2501   develop(bool, GenerateRangeChecks, true,                                  \
2502           "Generate range checks for array accesses")                       \
2503                                                                             \
2504   diagnostic_pd(bool, ImplicitNullChecks,                                      \
2505           "Generate code for implicit null checks")                         \
2506                                                                             \
2507   product_pd(bool, TrapBasedNullChecks,                                     \
2508           "Generate code for null checks that uses a cmp and trap "         \
2509           "instruction raising SIGTRAP.  This is only used if an access to" \
2510           "null (+offset) will not raise a SIGSEGV, i.e.,"                  \
2511           "ImplicitNullChecks don't work (PPC64).")                         \
2512                                                                             \
2513   product(bool, PrintSafepointStatistics, false,                            \
2514           "Print statistics about safepoint synchronization")               \
2515                                                                             \
2516   product(intx, PrintSafepointStatisticsCount, 300,                         \
2517           "Total number of safepoint statistics collected "                 \
2518           "before printing them out")                                       \
2519           range(1, max_intx)                                                \
2520                                                                             \
2521   product(intx, PrintSafepointStatisticsTimeout,  -1,                       \
2522           "Print safepoint statistics only when safepoint takes "           \
2523           "more than PrintSafepointSatisticsTimeout in millis")             \
2524   LP64_ONLY(range(-1, max_intx/MICROUNITS))                                 \


3118   product(intx, PerMethodTrapLimit,  100,                                   \
3119           "Limit on traps (of one kind) in a method (includes inlines)")    \
3120           range(0, max_jint)                                                \
3121                                                                             \
3122   experimental(intx, PerMethodSpecTrapLimit,  5000,                         \
3123           "Limit on speculative traps (of one kind) in a method "           \
3124           "(includes inlines)")                                             \
3125           range(0, max_jint)                                                \
3126                                                                             \
3127   product(intx, PerBytecodeTrapLimit,  4,                                   \
3128           "Limit on traps (of one kind) at a particular BCI")               \
3129           range(0, max_jint)                                                \
3130                                                                             \
3131   experimental(intx, SpecTrapLimitExtraEntries,  3,                         \
3132           "Extra method data trap entries for speculation")                 \
3133                                                                             \
3134   develop(intx, InlineFrequencyRatio,    20,                                \
3135           "Ratio of call site execution to caller method invocation")       \
3136           range(0, max_jint)                                                \
3137                                                                             \
3138   diagnostic_pd(intx, InlineFrequencyCount,                                    \
3139           "Count of call site execution necessary to trigger frequent "     \
3140           "inlining")                                                       \
3141           range(0, max_jint)                                                \
3142                                                                             \
3143   develop(intx, InlineThrowCount,    50,                                    \
3144           "Force inlining of interpreted methods that throw this often")    \
3145           range(0, max_jint)                                                \
3146                                                                             \
3147   develop(intx, InlineThrowMaxSize,   200,                                  \
3148           "Force inlining of throwing methods smaller than this")           \
3149           range(0, max_jint)                                                \
3150                                                                             \
3151   develop(intx, ProfilerNodeSize,  1024,                                    \
3152           "Size in K to allocate for the Profile Nodes of each thread")     \
3153           range(0, 1024)                                                    \
3154                                                                             \
3155   /* gc parameters */                                                       \
3156   product(size_t, InitialHeapSize, 0,                                       \
3157           "Initial heap size (in bytes); zero means use ergonomics")        \
3158           constraint(InitialHeapSizeConstraintFunc,AfterErgo)               \


4099   diagnostic(bool, UseUnalignedAccesses, false,                             \
4100           "Use unaligned memory accesses in Unsafe")                        \
4101                                                                             \
4102   product_pd(bool, PreserveFramePointer,                                    \
4103              "Use the FP register for holding the frame pointer "           \
4104              "and not as a general purpose register.")                      \
4105                                                                             \
4106   diagnostic(bool, CheckIntrinsics, true,                                   \
4107              "When a class C is loaded, check that "                        \
4108              "(1) all intrinsics defined by the VM for class C are present "\
4109              "in the loaded class file and are marked with the "            \
4110              "@HotSpotIntrinsicCandidate annotation, that "                 \
4111              "(2) there is an intrinsic registered for all loaded methods " \
4112              "that are annotated with the @HotSpotIntrinsicCandidate "      \
4113              "annotation, and that "                                        \
4114              "(3) no orphan methods exist for class C (i.e., methods for "  \
4115              "which the VM declares an intrinsic but that are not declared "\
4116              "in the loaded class C. "                                      \
4117              "Check (3) is available only in debug builds.")                \
4118                                                                             \
4119   diagnostic_pd(intx, InitArrayShortSize,                                   \
4120           "Threshold small size (in bytes) for clearing arrays. "           \
4121           "Anything this size or smaller may get converted to discrete "    \
4122           "scalar stores.")                                                 \
4123           range(0, max_intx)                                                \
4124           constraint(InitArrayShortSizeConstraintFunc, AfterErgo)           \
4125                                                                             \
4126   diagnostic(bool, CompilerDirectivesIgnoreCompileCommands, false,          \
4127              "Disable backwards compatibility for compile commands.")       \
4128                                                                             \
4129   diagnostic(bool, CompilerDirectivesPrint, false,                          \
4130              "Print compiler directives on installation.")                  \
4131   diagnostic(int,  CompilerDirectivesLimit, 50,                             \
4132              "Limit on number of compiler directives.")
4133 
4134 
4135 /*
4136  *  Macros for factoring of globals
4137  */
4138 
4139 // Interface macros
4140 #define DECLARE_PRODUCT_FLAG(type, name, value, doc)      extern "C" type name;
4141 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc)          extern "C" type name;
4142 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc)   extern "C" type name;
4143 #define DECLARE_PD_DIAGNOSTIC_FLAG(type, name, doc)       extern "C" type name;
4144 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
4145 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc)   extern "C" type name;
4146 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc)   extern "C" type name;
4147 #ifdef PRODUCT
4148 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)    const type name = value;
4149 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)        const type name = pd_##name;
4150 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)   const type name = value;
4151 #else
4152 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)    extern "C" type name;
4153 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)        extern "C" type name;
4154 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)   extern "C" type name;
4155 #endif // PRODUCT
4156 // Special LP64 flags, product only needed for now.
4157 #ifdef _LP64
4158 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
4159 #else
4160 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value;
4161 #endif // _LP64
4162 
4163 // Implementation macros
4164 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc)      type name = value;
4165 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc)          type name = pd_##name;
4166 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc)   type name = value;
4167 #define MATERIALIZE_PD_DIAGNOSTIC_FLAG(type, name, doc)       type name = pd_##name;
4168 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value;
4169 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc)   type name = value;
4170 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc)   type name = value;
4171 #ifdef PRODUCT
4172 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc)
4173 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)
4174 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)
4175 #else
4176 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc)    type name = value;
4177 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)        type name = pd_##name;
4178 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)   type name = value;
4179 #endif // PRODUCT
4180 #ifdef _LP64
4181 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value;
4182 #else
4183 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */
4184 #endif // _LP64
4185 
4186 // Only materialize src code for range checking when required, ignore otherwise
4187 #define IGNORE_RANGE(a, b)
4188 // Only materialize src code for contraint checking when required, ignore otherwise
4189 #define IGNORE_CONSTRAINT(func,type)
4190 
4191 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, \
4192               DECLARE_PD_DEVELOPER_FLAG, \
4193               DECLARE_PRODUCT_FLAG, \
4194               DECLARE_PD_PRODUCT_FLAG, \
4195               DECLARE_DIAGNOSTIC_FLAG, \
4196               DECLARE_PD_DIAGNOSTIC_FLAG, \
4197               DECLARE_EXPERIMENTAL_FLAG, \
4198               DECLARE_NOTPRODUCT_FLAG, \
4199               DECLARE_MANAGEABLE_FLAG, \
4200               DECLARE_PRODUCT_RW_FLAG, \
4201               DECLARE_LP64_PRODUCT_FLAG, \
4202               IGNORE_RANGE, \
4203               IGNORE_CONSTRAINT)
4204 
4205 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, \
4206                  DECLARE_PD_DEVELOPER_FLAG, \
4207                  DECLARE_PRODUCT_FLAG, \
4208                  DECLARE_PD_PRODUCT_FLAG, \
4209                  DECLARE_DIAGNOSTIC_FLAG, \
4210                  DECLARE_PD_DIAGNOSTIC_FLAG, \
4211                  DECLARE_NOTPRODUCT_FLAG, \
4212                  IGNORE_RANGE, \
4213                  IGNORE_CONSTRAINT)
4214 
4215 ARCH_FLAGS(DECLARE_DEVELOPER_FLAG, \
4216            DECLARE_PRODUCT_FLAG, \
4217            DECLARE_DIAGNOSTIC_FLAG, \
4218            DECLARE_EXPERIMENTAL_FLAG, \
4219            DECLARE_NOTPRODUCT_FLAG, \
4220            IGNORE_RANGE, \
4221            IGNORE_CONSTRAINT)
4222 
4223 // Extensions
4224 
4225 #include "runtime/globals_ext.hpp"
4226 
4227 #endif // SHARE_VM_RUNTIME_GLOBALS_HPP