The valid range of CompileThresholdScaling is set to the following:
product(double, CompileThresholdScaling, 1.0, \
"Factor to control when first compilation happens " \
"(both with and without tiered compilation): " \
"values greater than 1.0 delay counter overflow, " \
"values between 0 and 1.0 rush counter overflow, " \
"value of 1.0 leaves compilation thresholds unchanged " \
"value of 0.0 is equivalent to -Xint. " \
"" \
"Flag can be set as per-method option. " \
"If a value is specified for a method, compilation thresholds " \
"for that method are scaled by both the value of the global flag "\
"and the value of the per-method flag.") \
range(0.0, DBL_MAX) \
However, if DBL_MAX is used, the VM fails to start after JDK-8283013
CompileThresholdScaling scales several compiler thresholds. If the scaled threshold value is outside of the allowed range, the default value is kept.
When CompileThreshold is outside the allowed range, the VM is not created: change CompileThreshold to be handled by CompileThresholdScaling like the other thresholds.
$ java -XX:+PrintFlagsRanges --version | grep CompileThresholdScaling
double CompileThresholdScaling [ 0.000 ... 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000 ] {product} {default}
$ java -XX:CompileThresholdScaling=179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000 --version
intx Tier0InvokeNotifyFreqLog=32 is outside the allowed range [ 0 ... 30 ]
intx Tier0BackedgeNotifyFreqLog=32 is outside the allowed range [ 0 ... 30 ]
intx Tier3InvocationThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
intx Tier3MinInvocationThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
intx Tier3CompileThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
intx Tier3BackEdgeThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
intx Tier2InvokeNotifyFreqLog=32 is outside the allowed range [ 0 ... 30 ]
intx Tier2BackedgeNotifyFreqLog=32 is outside the allowed range [ 0 ... 30 ]
intx Tier3InvokeNotifyFreqLog=32 is outside the allowed range [ 0 ... 30 ]
intx Tier3BackedgeNotifyFreqLog=32 is outside the allowed range [ 0 ... 30 ]
intx Tier23InlineeNotifyFreqLog=32 is outside the allowed range [ 0 ... 30 ]
intx Tier4InvocationThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
intx Tier4MinInvocationThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
intx Tier4CompileThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
intx Tier4BackEdgeThreshold=9223372036854775807 is outside the allowed range [ 0 ... 2147483647 ]
OnStackReplacePercentage cannot be validated because CompileThreshold value is invalid
CompileThreshold (9223372036854775807) must be between 0 and 1073741823
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.