233
234 // No constraint emitting
235 void emit_range_no(...) { /* NOP */ }
236
237 // No constraint emitting if function argument is NOT provided
238 void emit_range_bool(const char* /*name*/) { /* NOP */ }
239 void emit_range_ccstr(const char* /*name*/) { /* NOP */ }
240 void emit_range_ccstrlist(const char* /*name*/) { /* NOP */ }
241 void emit_range_int(const char* /*name*/) { /* NOP */ }
242 void emit_range_intx(const char* /*name*/) { /* NOP */ }
243 void emit_range_uint(const char* /*name*/) { /* NOP */ }
244 void emit_range_uintx(const char* /*name*/) { /* NOP */ }
245 void emit_range_uint64_t(const char* /*name*/) { /* NOP */ }
246 void emit_range_size_t(const char* /*name*/) { /* NOP */ }
247 void emit_range_double(const char* /*name*/) { /* NOP */ }
248
249 // CommandLineFlagRange emitting code functions if range arguments are provided
250 void emit_range_intx(const char* name, intx min, intx max) {
251 CommandLineFlagRangeList::add(new CommandLineFlagRange_intx(name, min, max));
252 }
253 void emit_range_uintx(const char* name, uintx min, uintx max) {
254 CommandLineFlagRangeList::add(new CommandLineFlagRange_uintx(name, min, max));
255 }
256 void emit_range_uint64_t(const char* name, uint64_t min, uint64_t max) {
257 CommandLineFlagRangeList::add(new CommandLineFlagRange_uint64_t(name, min, max));
258 }
259 void emit_range_size_t(const char* name, size_t min, size_t max) {
260 CommandLineFlagRangeList::add(new CommandLineFlagRange_size_t(name, min, max));
261 }
262 void emit_range_double(const char* name, double min, double max) {
263 CommandLineFlagRangeList::add(new CommandLineFlagRange_double(name, min, max));
264 }
265
266 // Generate code to call emit_range_xxx function
267 #define EMIT_RANGE_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
268 #define EMIT_RANGE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
269 #define EMIT_RANGE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_range_##type(#name
270 #define EMIT_RANGE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
271 #define EMIT_RANGE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_range_##type(#name
272 #define EMIT_RANGE_PRODUCT_RW_FLAG(type, name, value, doc) ); emit_range_##type(#name
273 #define EMIT_RANGE_PD_PRODUCT_FLAG(type, name, doc) ); emit_range_##type(#name
274 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) ); emit_range_##type(#name
275 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_range_##type(#name
276 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
277 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
278
279 // Generate func argument to pass into emit_range_xxx functions
280 #define EMIT_RANGE_CHECK(a, b) , a, b
281
282 #define INITIAL_RANGES_SIZE 320
283 GrowableArray<CommandLineFlagRange*>* CommandLineFlagRangeList::_ranges = NULL;
284
285 // Check the ranges of all flags that have them
286 void CommandLineFlagRangeList::init(void) {
287
288 _ranges = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<CommandLineFlagRange*>(INITIAL_RANGES_SIZE, true);
289
290 emit_range_no(NULL RUNTIME_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
291 EMIT_RANGE_PD_DEVELOPER_FLAG,
292 EMIT_RANGE_PRODUCT_FLAG,
293 EMIT_RANGE_PD_PRODUCT_FLAG,
294 EMIT_RANGE_DIAGNOSTIC_FLAG,
295 EMIT_RANGE_EXPERIMENTAL_FLAG,
296 EMIT_RANGE_NOTPRODUCT_FLAG,
297 EMIT_RANGE_MANAGEABLE_FLAG,
298 EMIT_RANGE_PRODUCT_RW_FLAG,
299 EMIT_RANGE_LP64_PRODUCT_FLAG,
300 EMIT_RANGE_CHECK,
301 IGNORE_CONSTRAINT) );
302
|
233
234 // No constraint emitting
235 void emit_range_no(...) { /* NOP */ }
236
237 // No constraint emitting if function argument is NOT provided
238 void emit_range_bool(const char* /*name*/) { /* NOP */ }
239 void emit_range_ccstr(const char* /*name*/) { /* NOP */ }
240 void emit_range_ccstrlist(const char* /*name*/) { /* NOP */ }
241 void emit_range_int(const char* /*name*/) { /* NOP */ }
242 void emit_range_intx(const char* /*name*/) { /* NOP */ }
243 void emit_range_uint(const char* /*name*/) { /* NOP */ }
244 void emit_range_uintx(const char* /*name*/) { /* NOP */ }
245 void emit_range_uint64_t(const char* /*name*/) { /* NOP */ }
246 void emit_range_size_t(const char* /*name*/) { /* NOP */ }
247 void emit_range_double(const char* /*name*/) { /* NOP */ }
248
249 // CommandLineFlagRange emitting code functions if range arguments are provided
250 void emit_range_intx(const char* name, intx min, intx max) {
251 CommandLineFlagRangeList::add(new CommandLineFlagRange_intx(name, min, max));
252 }
253 void emit_range_uint(const char* name, uint min, uint max) {
254 CommandLineFlagRangeList::add(new CommandLineFlagRange_uint(name, min, max));
255 }
256 void emit_range_uintx(const char* name, uintx min, uintx max) {
257 CommandLineFlagRangeList::add(new CommandLineFlagRange_uintx(name, min, max));
258 }
259 void emit_range_uint64_t(const char* name, uint64_t min, uint64_t max) {
260 CommandLineFlagRangeList::add(new CommandLineFlagRange_uint64_t(name, min, max));
261 }
262 void emit_range_size_t(const char* name, size_t min, size_t max) {
263 CommandLineFlagRangeList::add(new CommandLineFlagRange_size_t(name, min, max));
264 }
265 void emit_range_double(const char* name, double min, double max) {
266 CommandLineFlagRangeList::add(new CommandLineFlagRange_double(name, min, max));
267 }
268
269 // Generate code to call emit_range_xxx function
270 #define EMIT_RANGE_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
271 #define EMIT_RANGE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
272 #define EMIT_RANGE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_range_##type(#name
273 #define EMIT_RANGE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
274 #define EMIT_RANGE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_range_##type(#name
275 #define EMIT_RANGE_PRODUCT_RW_FLAG(type, name, value, doc) ); emit_range_##type(#name
276 #define EMIT_RANGE_PD_PRODUCT_FLAG(type, name, doc) ); emit_range_##type(#name
277 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) ); emit_range_##type(#name
278 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_range_##type(#name
279 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
280 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
281
282 // Generate func argument to pass into emit_range_xxx functions
283 #define EMIT_RANGE_CHECK(a, b) , a, b
284
285 #define INITIAL_RANGES_SIZE 379
286 GrowableArray<CommandLineFlagRange*>* CommandLineFlagRangeList::_ranges = NULL;
287
288 // Check the ranges of all flags that have them
289 void CommandLineFlagRangeList::init(void) {
290
291 _ranges = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<CommandLineFlagRange*>(INITIAL_RANGES_SIZE, true);
292
293 emit_range_no(NULL RUNTIME_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
294 EMIT_RANGE_PD_DEVELOPER_FLAG,
295 EMIT_RANGE_PRODUCT_FLAG,
296 EMIT_RANGE_PD_PRODUCT_FLAG,
297 EMIT_RANGE_DIAGNOSTIC_FLAG,
298 EMIT_RANGE_EXPERIMENTAL_FLAG,
299 EMIT_RANGE_NOTPRODUCT_FLAG,
300 EMIT_RANGE_MANAGEABLE_FLAG,
301 EMIT_RANGE_PRODUCT_RW_FLAG,
302 EMIT_RANGE_LP64_PRODUCT_FLAG,
303 EMIT_RANGE_CHECK,
304 IGNORE_CONSTRAINT) );
305
|