290 void emit_range_double(const char* name, const double* ptr, double min, double max) { |
290 void emit_range_double(const char* name, const double* ptr, double min, double max) { |
291 JVMFlagRangeList::add(new JVMFlagRange_double(name, ptr, min, max)); |
291 JVMFlagRangeList::add(new JVMFlagRange_double(name, ptr, min, max)); |
292 } |
292 } |
293 |
293 |
294 // Generate code to call emit_range_xxx function |
294 // Generate code to call emit_range_xxx function |
295 #define EMIT_RANGE_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
295 #define EMIT_RANGE_START (void)(0 |
296 #define EMIT_RANGE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
296 #define EMIT_RANGE(type, name) ); emit_range_##type(#name, &name |
297 #define EMIT_RANGE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
297 #define EMIT_RANGE_NO ); emit_range_no(0 |
298 #define EMIT_RANGE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
298 #define EMIT_RANGE_PRODUCT_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
299 #define EMIT_RANGE_PRODUCT_RW_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
299 #define EMIT_RANGE_DIAGNOSTIC_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
300 #define EMIT_RANGE_PD_PRODUCT_FLAG(type, name, doc) ); emit_range_##type(#name,&name |
300 #define EMIT_RANGE_EXPERIMENTAL_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
301 #define EMIT_RANGE_PD_DIAGNOSTIC_FLAG(type, name, doc) ); emit_range_##type(#name,&name |
301 #define EMIT_RANGE_MANAGEABLE_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
|
302 #define EMIT_RANGE_PRODUCT_RW_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
|
303 #define EMIT_RANGE_PD_PRODUCT_FLAG(type, name, doc) EMIT_RANGE(type, name) |
|
304 #define EMIT_RANGE_PD_DIAGNOSTIC_FLAG(type, name, doc) EMIT_RANGE(type, name) |
302 #ifndef PRODUCT |
305 #ifndef PRODUCT |
303 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
306 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
304 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_range_##type(#name,&name |
307 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) EMIT_RANGE(type, name) |
305 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
308 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
306 #else |
309 #else |
307 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) ); emit_range_no(#name,&name |
310 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) EMIT_RANGE_NO |
308 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_range_no(#name,&name |
311 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) EMIT_RANGE_NO |
309 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_range_no(#name,&name |
312 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) EMIT_RANGE_NO |
310 #endif |
313 #endif |
311 #ifdef _LP64 |
314 #ifdef _LP64 |
312 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name,&name |
315 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) EMIT_RANGE(type, name) |
313 #else |
316 #else |
314 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_range_no(#name,&name |
317 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) EMIT_RANGE_NO |
315 #endif |
318 #endif |
|
319 #define EMIT_RANGE_END ); |
316 |
320 |
317 // Generate func argument to pass into emit_range_xxx functions |
321 // Generate func argument to pass into emit_range_xxx functions |
318 #define EMIT_RANGE_CHECK(a, b) , a, b |
322 #define EMIT_RANGE_CHECK(a, b) , a, b |
319 |
323 |
320 #define INITIAL_RANGES_SIZE 379 |
324 #define INITIAL_RANGES_SIZE 379 |
323 // Check the ranges of all flags that have them |
327 // Check the ranges of all flags that have them |
324 void JVMFlagRangeList::init(void) { |
328 void JVMFlagRangeList::init(void) { |
325 |
329 |
326 _ranges = new (ResourceObj::C_HEAP, mtArguments) GrowableArray<JVMFlagRange*>(INITIAL_RANGES_SIZE, true); |
330 _ranges = new (ResourceObj::C_HEAP, mtArguments) GrowableArray<JVMFlagRange*>(INITIAL_RANGES_SIZE, true); |
327 |
331 |
328 emit_range_no(NULL VM_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, |
332 EMIT_RANGE_START |
329 EMIT_RANGE_PD_DEVELOPER_FLAG, |
333 |
330 EMIT_RANGE_PRODUCT_FLAG, |
334 ALL_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, |
331 EMIT_RANGE_PD_PRODUCT_FLAG, |
335 EMIT_RANGE_PD_DEVELOPER_FLAG, |
332 EMIT_RANGE_DIAGNOSTIC_FLAG, |
336 EMIT_RANGE_PRODUCT_FLAG, |
333 EMIT_RANGE_PD_DIAGNOSTIC_FLAG, |
337 EMIT_RANGE_PD_PRODUCT_FLAG, |
334 EMIT_RANGE_EXPERIMENTAL_FLAG, |
338 EMIT_RANGE_DIAGNOSTIC_FLAG, |
335 EMIT_RANGE_NOTPRODUCT_FLAG, |
339 EMIT_RANGE_PD_DIAGNOSTIC_FLAG, |
336 EMIT_RANGE_MANAGEABLE_FLAG, |
340 EMIT_RANGE_EXPERIMENTAL_FLAG, |
337 EMIT_RANGE_PRODUCT_RW_FLAG, |
341 EMIT_RANGE_NOTPRODUCT_FLAG, |
338 EMIT_RANGE_LP64_PRODUCT_FLAG, |
342 EMIT_RANGE_MANAGEABLE_FLAG, |
339 EMIT_RANGE_CHECK, |
343 EMIT_RANGE_PRODUCT_RW_FLAG, |
340 IGNORE_CONSTRAINT, |
344 EMIT_RANGE_LP64_PRODUCT_FLAG, |
341 IGNORE_WRITEABLE)); |
345 EMIT_RANGE_CHECK, |
|
346 IGNORE_CONSTRAINT, |
|
347 IGNORE_WRITEABLE) |
342 |
348 |
343 EMIT_RANGES_FOR_GLOBALS_EXT |
349 EMIT_RANGES_FOR_GLOBALS_EXT |
344 |
350 |
345 emit_range_no(NULL ARCH_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, |
351 EMIT_RANGE_END |
346 EMIT_RANGE_PRODUCT_FLAG, |
|
347 EMIT_RANGE_DIAGNOSTIC_FLAG, |
|
348 EMIT_RANGE_EXPERIMENTAL_FLAG, |
|
349 EMIT_RANGE_NOTPRODUCT_FLAG, |
|
350 EMIT_RANGE_CHECK, |
|
351 IGNORE_CONSTRAINT, |
|
352 IGNORE_WRITEABLE)); |
|
353 |
|
354 #if INCLUDE_JVMCI |
|
355 emit_range_no(NULL JVMCI_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, |
|
356 EMIT_RANGE_PD_DEVELOPER_FLAG, |
|
357 EMIT_RANGE_PRODUCT_FLAG, |
|
358 EMIT_RANGE_PD_PRODUCT_FLAG, |
|
359 EMIT_RANGE_DIAGNOSTIC_FLAG, |
|
360 EMIT_RANGE_PD_DIAGNOSTIC_FLAG, |
|
361 EMIT_RANGE_EXPERIMENTAL_FLAG, |
|
362 EMIT_RANGE_NOTPRODUCT_FLAG, |
|
363 EMIT_RANGE_CHECK, |
|
364 IGNORE_CONSTRAINT, |
|
365 IGNORE_WRITEABLE)); |
|
366 #endif // INCLUDE_JVMCI |
|
367 |
|
368 #ifdef COMPILER1 |
|
369 emit_range_no(NULL C1_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, |
|
370 EMIT_RANGE_PD_DEVELOPER_FLAG, |
|
371 EMIT_RANGE_PRODUCT_FLAG, |
|
372 EMIT_RANGE_PD_PRODUCT_FLAG, |
|
373 EMIT_RANGE_DIAGNOSTIC_FLAG, |
|
374 EMIT_RANGE_PD_DIAGNOSTIC_FLAG, |
|
375 EMIT_RANGE_NOTPRODUCT_FLAG, |
|
376 EMIT_RANGE_CHECK, |
|
377 IGNORE_CONSTRAINT, |
|
378 IGNORE_WRITEABLE)); |
|
379 #endif // COMPILER1 |
|
380 |
|
381 #ifdef COMPILER2 |
|
382 emit_range_no(NULL C2_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, |
|
383 EMIT_RANGE_PD_DEVELOPER_FLAG, |
|
384 EMIT_RANGE_PRODUCT_FLAG, |
|
385 EMIT_RANGE_PD_PRODUCT_FLAG, |
|
386 EMIT_RANGE_DIAGNOSTIC_FLAG, |
|
387 EMIT_RANGE_PD_DIAGNOSTIC_FLAG, |
|
388 EMIT_RANGE_EXPERIMENTAL_FLAG, |
|
389 EMIT_RANGE_NOTPRODUCT_FLAG, |
|
390 EMIT_RANGE_CHECK, |
|
391 IGNORE_CONSTRAINT, |
|
392 IGNORE_WRITEABLE)); |
|
393 #endif // COMPILER2 |
|
394 } |
352 } |
395 |
353 |
396 JVMFlagRange* JVMFlagRangeList::find(const char* name) { |
354 JVMFlagRange* JVMFlagRangeList::find(const char* name) { |
397 JVMFlagRange* found = NULL; |
355 JVMFlagRange* found = NULL; |
398 for (int i=0; i<length(); i++) { |
356 for (int i=0; i<length(); i++) { |