2527 "monitors") \ |
2528 "monitors") \ |
2528 \ |
2529 \ |
2529 develop(bool, GenerateRangeChecks, true, \ |
2530 develop(bool, GenerateRangeChecks, true, \ |
2530 "Generate range checks for array accesses") \ |
2531 "Generate range checks for array accesses") \ |
2531 \ |
2532 \ |
2532 develop_pd(bool, ImplicitNullChecks, \ |
2533 diagnostic_pd(bool, ImplicitNullChecks, \ |
2533 "Generate code for implicit null checks") \ |
2534 "Generate code for implicit null checks") \ |
2534 \ |
2535 \ |
2535 product_pd(bool, TrapBasedNullChecks, \ |
2536 product_pd(bool, TrapBasedNullChecks, \ |
2536 "Generate code for null checks that uses a cmp and trap " \ |
2537 "Generate code for null checks that uses a cmp and trap " \ |
2537 "instruction raising SIGTRAP. This is only used if an access to" \ |
2538 "instruction raising SIGTRAP. This is only used if an access to" \ |
3161 \ |
3162 \ |
3162 develop(intx, InlineFrequencyRatio, 20, \ |
3163 develop(intx, InlineFrequencyRatio, 20, \ |
3163 "Ratio of call site execution to caller method invocation") \ |
3164 "Ratio of call site execution to caller method invocation") \ |
3164 range(0, max_jint) \ |
3165 range(0, max_jint) \ |
3165 \ |
3166 \ |
3166 develop_pd(intx, InlineFrequencyCount, \ |
3167 diagnostic_pd(intx, InlineFrequencyCount, \ |
3167 "Count of call site execution necessary to trigger frequent " \ |
3168 "Count of call site execution necessary to trigger frequent " \ |
3168 "inlining") \ |
3169 "inlining") \ |
3169 range(0, max_jint) \ |
3170 range(0, max_jint) \ |
3170 \ |
3171 \ |
3171 develop(intx, InlineThrowCount, 50, \ |
3172 develop(intx, InlineThrowCount, 50, \ |
4142 "(3) no orphan methods exist for class C (i.e., methods for " \ |
4143 "(3) no orphan methods exist for class C (i.e., methods for " \ |
4143 "which the VM declares an intrinsic but that are not declared "\ |
4144 "which the VM declares an intrinsic but that are not declared "\ |
4144 "in the loaded class C. " \ |
4145 "in the loaded class C. " \ |
4145 "Check (3) is available only in debug builds.") \ |
4146 "Check (3) is available only in debug builds.") \ |
4146 \ |
4147 \ |
4147 develop_pd(intx, InitArrayShortSize, \ |
4148 diagnostic_pd(intx, InitArrayShortSize, \ |
4148 "Threshold small size (in bytes) for clearing arrays. " \ |
4149 "Threshold small size (in bytes) for clearing arrays. " \ |
4149 "Anything this size or smaller may get converted to discrete " \ |
4150 "Anything this size or smaller may get converted to discrete " \ |
4150 "scalar stores.") \ |
4151 "scalar stores.") \ |
4151 range(0, max_intx) \ |
4152 range(0, max_intx) \ |
4152 constraint(InitArrayShortSizeConstraintFunc, AfterErgo) \ |
4153 constraint(InitArrayShortSizeConstraintFunc, AfterErgo) \ |
4166 |
4167 |
4167 // Interface macros |
4168 // Interface macros |
4168 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; |
4169 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; |
4169 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; |
4170 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; |
4170 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; |
4171 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; |
|
4172 #define DECLARE_PD_DIAGNOSTIC_FLAG(type, name, doc) extern "C" type name; |
4171 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name; |
4173 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name; |
4172 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; |
4174 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; |
4173 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; |
4175 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; |
4174 #ifdef PRODUCT |
4176 #ifdef PRODUCT |
4175 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; |
4177 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; |
4189 |
4191 |
4190 // Implementation macros |
4192 // Implementation macros |
4191 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc) type name = value; |
4193 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc) type name = value; |
4192 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc) type name = pd_##name; |
4194 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc) type name = pd_##name; |
4193 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value; |
4195 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value; |
|
4196 #define MATERIALIZE_PD_DIAGNOSTIC_FLAG(type, name, doc) type name = pd_##name; |
4194 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value; |
4197 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value; |
4195 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value; |
4198 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value; |
4196 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value; |
4199 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value; |
4197 #ifdef PRODUCT |
4200 #ifdef PRODUCT |
4198 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) |
4201 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) |
4219 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, \ |
4222 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, \ |
4220 DECLARE_PD_DEVELOPER_FLAG, \ |
4223 DECLARE_PD_DEVELOPER_FLAG, \ |
4221 DECLARE_PRODUCT_FLAG, \ |
4224 DECLARE_PRODUCT_FLAG, \ |
4222 DECLARE_PD_PRODUCT_FLAG, \ |
4225 DECLARE_PD_PRODUCT_FLAG, \ |
4223 DECLARE_DIAGNOSTIC_FLAG, \ |
4226 DECLARE_DIAGNOSTIC_FLAG, \ |
|
4227 DECLARE_PD_DIAGNOSTIC_FLAG, \ |
4224 DECLARE_EXPERIMENTAL_FLAG, \ |
4228 DECLARE_EXPERIMENTAL_FLAG, \ |
4225 DECLARE_NOTPRODUCT_FLAG, \ |
4229 DECLARE_NOTPRODUCT_FLAG, \ |
4226 DECLARE_MANAGEABLE_FLAG, \ |
4230 DECLARE_MANAGEABLE_FLAG, \ |
4227 DECLARE_PRODUCT_RW_FLAG, \ |
4231 DECLARE_PRODUCT_RW_FLAG, \ |
4228 DECLARE_LP64_PRODUCT_FLAG, \ |
4232 DECLARE_LP64_PRODUCT_FLAG, \ |
4233 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, \ |
4237 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, \ |
4234 DECLARE_PD_DEVELOPER_FLAG, \ |
4238 DECLARE_PD_DEVELOPER_FLAG, \ |
4235 DECLARE_PRODUCT_FLAG, \ |
4239 DECLARE_PRODUCT_FLAG, \ |
4236 DECLARE_PD_PRODUCT_FLAG, \ |
4240 DECLARE_PD_PRODUCT_FLAG, \ |
4237 DECLARE_DIAGNOSTIC_FLAG, \ |
4241 DECLARE_DIAGNOSTIC_FLAG, \ |
|
4242 DECLARE_PD_DIAGNOSTIC_FLAG, \ |
4238 DECLARE_NOTPRODUCT_FLAG, \ |
4243 DECLARE_NOTPRODUCT_FLAG, \ |
4239 IGNORE_RANGE, \ |
4244 IGNORE_RANGE, \ |
4240 IGNORE_CONSTRAINT, \ |
4245 IGNORE_CONSTRAINT, \ |
4241 IGNORE_WRITEABLE) |
4246 IGNORE_WRITEABLE) |
4242 |
4247 |