434 static Flag::Error doubleAtPut(const char* name, size_t len, double* value, Flag::Flags origin);
435 static Flag::Error doubleAtPut(const char* name, double* value, Flag::Flags origin) { return doubleAtPut(name, strlen(name), value, origin); }
436
437 static Flag::Error ccstrAt(const char* name, size_t len, ccstr* value, bool allow_locked = false, bool return_flag = false);
438 static Flag::Error ccstrAt(const char* name, ccstr* value, bool allow_locked = false, bool return_flag = false) { return ccstrAt(name, strlen(name), value, allow_locked, return_flag); }
439 // Contract: Flag will make private copy of the incoming value.
440 // Outgoing value is always malloc-ed, and caller MUST call free.
441 static Flag::Error ccstrAtPut(const char* name, size_t len, ccstr* value, Flag::Flags origin);
442 static Flag::Error ccstrAtPut(const char* name, ccstr* value, Flag::Flags origin) { return ccstrAtPut(name, strlen(name), value, origin); }
443
444 // Returns false if name is not a command line flag.
445 static bool wasSetOnCmdline(const char* name, bool* value);
446 static void printSetFlags(outputStream* out);
447
448 // printRanges will print out flags type, name and range values as expected by -XX:+PrintFlagsRanges
449 static void printFlags(outputStream* out, bool withComments, bool printRanges = false);
450
451 static void verify() PRODUCT_RETURN;
452 };
453
454 // use this for flags that are true by default in the debug version but
455 // false in the optimized version, and vice versa
456 #ifdef ASSERT
457 #define trueInDebug true
458 #define falseInDebug false
459 #else
460 #define trueInDebug false
461 #define falseInDebug true
462 #endif
463
464 // use this for flags that are true per default in the product build
465 // but false in development builds, and vice versa
466 #ifdef PRODUCT
467 #define trueInProduct true
468 #define falseInProduct false
469 #else
470 #define trueInProduct false
471 #define falseInProduct true
472 #endif
473
2966 constraint(InitArrayShortSizeConstraintFunc, AfterErgo) \
2967 \
2968 diagnostic(bool, CompilerDirectivesIgnoreCompileCommands, false, \
2969 "Disable backwards compatibility for compile commands.") \
2970 \
2971 diagnostic(bool, CompilerDirectivesPrint, false, \
2972 "Print compiler directives on installation.") \
2973 diagnostic(int, CompilerDirectivesLimit, 50, \
2974 "Limit on number of compiler directives.") \
2975 \
2976 product(ccstr, AllocateHeapAt, NULL, \
2977 "Path to the directoy where a temporary file will be created " \
2978 "to use as the backing store for Java Heap.") \
2979 \
2980 develop(bool, VerifyMetaspace, false, \
2981 "Verify metaspace on chunk movements.") \
2982 \
2983 diagnostic(bool, ShowRegistersOnAssert, false, \
2984 "On internal errors, include registers in error report.") \
2985 \
2986
2987 #define VM_FLAGS(develop, \
2988 develop_pd, \
2989 product, \
2990 product_pd, \
2991 diagnostic, \
2992 diagnostic_pd, \
2993 experimental, \
2994 notproduct, \
2995 manageable, \
2996 product_rw, \
2997 lp64_product, \
2998 range, \
2999 constraint, \
3000 writeable) \
3001 \
3002 RUNTIME_FLAGS( \
3003 develop, \
3004 develop_pd, \
3005 product, \
|
434 static Flag::Error doubleAtPut(const char* name, size_t len, double* value, Flag::Flags origin);
435 static Flag::Error doubleAtPut(const char* name, double* value, Flag::Flags origin) { return doubleAtPut(name, strlen(name), value, origin); }
436
437 static Flag::Error ccstrAt(const char* name, size_t len, ccstr* value, bool allow_locked = false, bool return_flag = false);
438 static Flag::Error ccstrAt(const char* name, ccstr* value, bool allow_locked = false, bool return_flag = false) { return ccstrAt(name, strlen(name), value, allow_locked, return_flag); }
439 // Contract: Flag will make private copy of the incoming value.
440 // Outgoing value is always malloc-ed, and caller MUST call free.
441 static Flag::Error ccstrAtPut(const char* name, size_t len, ccstr* value, Flag::Flags origin);
442 static Flag::Error ccstrAtPut(const char* name, ccstr* value, Flag::Flags origin) { return ccstrAtPut(name, strlen(name), value, origin); }
443
444 // Returns false if name is not a command line flag.
445 static bool wasSetOnCmdline(const char* name, bool* value);
446 static void printSetFlags(outputStream* out);
447
448 // printRanges will print out flags type, name and range values as expected by -XX:+PrintFlagsRanges
449 static void printFlags(outputStream* out, bool withComments, bool printRanges = false);
450
451 static void verify() PRODUCT_RETURN;
452 };
453
454 #if INCLUDE_TRACE
455 #define TRACE_ONLY(code) code
456 #else
457 #define TRACE_ONLY(code)
458 #endif
459
460 // use this for flags that are true by default in the debug version but
461 // false in the optimized version, and vice versa
462 #ifdef ASSERT
463 #define trueInDebug true
464 #define falseInDebug false
465 #else
466 #define trueInDebug false
467 #define falseInDebug true
468 #endif
469
470 // use this for flags that are true per default in the product build
471 // but false in development builds, and vice versa
472 #ifdef PRODUCT
473 #define trueInProduct true
474 #define falseInProduct false
475 #else
476 #define trueInProduct false
477 #define falseInProduct true
478 #endif
479
2972 constraint(InitArrayShortSizeConstraintFunc, AfterErgo) \
2973 \
2974 diagnostic(bool, CompilerDirectivesIgnoreCompileCommands, false, \
2975 "Disable backwards compatibility for compile commands.") \
2976 \
2977 diagnostic(bool, CompilerDirectivesPrint, false, \
2978 "Print compiler directives on installation.") \
2979 diagnostic(int, CompilerDirectivesLimit, 50, \
2980 "Limit on number of compiler directives.") \
2981 \
2982 product(ccstr, AllocateHeapAt, NULL, \
2983 "Path to the directoy where a temporary file will be created " \
2984 "to use as the backing store for Java Heap.") \
2985 \
2986 develop(bool, VerifyMetaspace, false, \
2987 "Verify metaspace on chunk movements.") \
2988 \
2989 diagnostic(bool, ShowRegistersOnAssert, false, \
2990 "On internal errors, include registers in error report.") \
2991 \
2992 TRACE_ONLY(product(bool, FlightRecorder, false, \
2993 "Enable Flight Recorder")) \
2994 \
2995 TRACE_ONLY(product(ccstr, FlightRecorderOptions, NULL, \
2996 "Flight Recorder options")) \
2997 \
2998 TRACE_ONLY(product(ccstr, StartFlightRecording, NULL, \
2999 "Start flight recording with options")) \
3000 \
3001 experimental(bool, UseFastUnorderedTimeStamps, false, \
3002 "Use platform unstable time where supported for timestamps only")
3003
3004 #define VM_FLAGS(develop, \
3005 develop_pd, \
3006 product, \
3007 product_pd, \
3008 diagnostic, \
3009 diagnostic_pd, \
3010 experimental, \
3011 notproduct, \
3012 manageable, \
3013 product_rw, \
3014 lp64_product, \
3015 range, \
3016 constraint, \
3017 writeable) \
3018 \
3019 RUNTIME_FLAGS( \
3020 develop, \
3021 develop_pd, \
3022 product, \
|