--- old/src/share/vm/runtime/globals.cpp 2012-05-10 10:45:07.353359400 +0200 +++ new/src/share/vm/runtime/globals.cpp 2012-05-10 10:45:03.562552700 +0200 @@ -148,6 +148,8 @@ st->print("-XX:%s=" UINTX_FORMAT, name, get_uintx()); } else if (is_uint64_t()) { st->print("-XX:%s=" UINT64_FORMAT, name, get_uint64_t()); + } else if (is_double()) { + st->print("-XX:%s=%f", name, get_double()); } else if (is_ccstr()) { st->print("-XX:%s=", name); const char* cp = get_ccstr(); --- /dev/null 2012-05-10 10:45:07.000000000 +0200 +++ new/test/runtime/7167069/PrintAsFlag.java 2012-05-10 10:45:03.578152700 +0200 @@ -0,0 +1,14 @@ +/* + * Note that in the run command below the only important flag is PrintCommandLineFlags. + * The others are just flags of all types; bool, intx, uintx, uint64_t, double and ccstr. + * + * @test PrintAsFlag + * @summary verify that Flag::print_as_flag() works correctly. This is used by "jinfo -flag" and -XX:+PrintCommandLineFlags. + * @run main/othervm -XX:+PrintCommandLineFlags -XX:-ShowMessageBoxOnError -XX:BiasedLockingStartupDelay=4000 -XX:ParallelGCThreads=4 -XX:MaxRAM=1G -XX:CMSSmallCoalSurplusPercent=1.05 -XX:ErrorFile="file" PrintAsFlag + */ + +public class PrintAsFlag { + public static void main(String... args) { + System.out.printf("Done"); + } +}