# HG changeset patch # User dcubed # Date 1443787121 0 # Node ID 9105fe3ec4922ae610f499205a2e1241d3a61d4f # Parent ad98b9e59ffa6a25cf2f4b1dc7d8ac0d50b6d6b4# Parent dfd3f4fb2c08ba3521a3e1f296ae8401c314519f Merge diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/src/share/vm/runtime/arguments.cpp --- a/hotspot/src/share/vm/runtime/arguments.cpp Fri Oct 02 10:15:46 2015 +0200 +++ b/hotspot/src/share/vm/runtime/arguments.cpp Fri Oct 02 11:58:41 2015 +0000 @@ -3711,8 +3711,6 @@ return retcode; } -const int OPTION_BUFFER_SIZE = 1024; - jint Arguments::parse_vm_options_file(const char* file_name, ScopedVMInitArgs* vm_args) { // read file into buffer int fd = ::open(file_name, O_RDONLY); @@ -3723,8 +3721,24 @@ return JNI_ERR; } + struct stat stbuf; + int retcode = os::stat(file_name, &stbuf); + if (retcode != 0) { + jio_fprintf(defaultStream::error_stream(), + "Could not stat options file '%s'\n", + file_name); + os::close(fd); + return JNI_ERR; + } + + if (stbuf.st_size == 0) { + // tell caller there is no option data and that is ok + os::close(fd); + return JNI_OK; + } + // '+ 1' for NULL termination even with max bytes - int bytes_alloc = OPTION_BUFFER_SIZE + 1; + size_t bytes_alloc = stbuf.st_size + 1; char *buf = NEW_C_HEAP_ARRAY_RETURN_NULL(char, bytes_alloc, mtInternal); if (NULL == buf) { @@ -3734,14 +3748,14 @@ return JNI_ENOMEM; } - memset(buf, 0, (unsigned)bytes_alloc); + memset(buf, 0, bytes_alloc); // Fill buffer // Use ::read() instead of os::read because os::read() // might do a thread state transition // and it is too early for that here - int bytes_read = ::read(fd, (void *)buf, (unsigned)bytes_alloc); + ssize_t bytes_read = ::read(fd, (void *)buf, (unsigned)bytes_alloc); os::close(fd); if (bytes_read < 0) { FREE_C_HEAP_ARRAY(char, buf); @@ -3756,16 +3770,7 @@ return JNI_OK; } - // file is larger than OPTION_BUFFER_SIZE - if (bytes_read > bytes_alloc - 1) { - FREE_C_HEAP_ARRAY(char, buf); - jio_fprintf(defaultStream::error_stream(), - "Options file '%s' is larger than %d bytes.\n", - file_name, bytes_alloc - 1); - return JNI_EINVAL; - } - - int retcode = parse_options_buffer(file_name, buf, bytes_read, vm_args); + retcode = parse_options_buffer(file_name, buf, bytes_read, vm_args); FREE_C_HEAP_ARRAY(char, buf); return retcode; diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java Fri Oct 02 10:15:46 2015 +0200 +++ b/hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java Fri Oct 02 11:58:41 2015 +0000 @@ -30,10 +30,6 @@ * @run main TestVMOptionsFile */ -import jdk.test.lib.OutputAnalyzer; -import jdk.test.lib.ProcessTools; -import jdk.test.lib.Asserts; -import jdk.test.lib.DynamicVMOption; import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -49,31 +45,39 @@ import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Properties; import java.util.Set; -import java.util.LinkedHashSet; +import jdk.test.lib.Asserts; +import jdk.test.lib.DynamicVMOption; +import jdk.test.lib.OutputAnalyzer; +import jdk.test.lib.ProcessTools; public class TestVMOptionsFile { - /* Empty VM Option file */ + /* Various valid VM Option files */ private static final String VM_OPTION_FILE_EMPTY = "optionfile_empty"; - /* VM Option file with tabs and spaces */ private static final String VM_OPTION_FILE_TABS_AND_SPACES = "optionfile_only_tabsandspaces"; - /* Various valid VM Option files */ private static final String VM_OPTION_FILE_1 = "optionfile_1"; private static final String VM_OPTION_FILE_2 = "optionFILE_2"; private static final String VM_OPTION_FILE_3 = "optionfile_3"; private static final String VM_OPTION_FILE_QUOTE = "optionfile_quote"; - private static final String VM_OPTION_FILE_QUOTE_MAX_SIZE = "optionfile_quote_max_size"; - /* 2 VM Option files with unmatched quotes */ - private static final String VM_OPTION_FILE_UNMATCHED_QUOTE_1 = "optionfile_unmatched_quote_1"; - private static final String VM_OPTION_FILE_UNMATCHED_QUOTE_2 = "optionfile_unmatched_quote_2"; + private static final String VM_OPTION_FILE_BIG = "optionfile_big"; + private static final int REPEAT_COUNT = 512; /* Name of the file with flags for VM_OPTION_FILE_2 Option file */ private static final String FLAGS_FILE = "flags_file"; /* VM Option file with a lot of options with quote on separate lines */ private static final String VM_OPTION_FILE_LOT_OF_OPTIONS_QUOTE = "optionfile_lot_of_options_quote"; /* Number of properties defined in VM_OPTION_FILE_LOT_OF_OPTIONS_QUOTE */ - private static final int NUM_OF_PROP_IN_FILE_LOT_OF_OPTIONS_QUOTE = 65; + private static final int NUM_OF_PROP_IN_FILE_LOT_OF_OPTIONS_QUOTE = 70; + /* VM Option file with long property */ + private static final String VM_OPTION_FILE_WITH_LONG_PROPERTY = "optionfile_long_property"; + private static final String LONG_PROPERTY_NAME = "veryl'" + String.format("%1536s", "").replace(' ', 'o') + "ng'name"; + private static final String LONG_PROPERTY_VALUE = String.format("%2096s", "").replaceAll(" ", "long"); + /* 2 VM Option files with unmatched quotes */ + private static final String VM_OPTION_FILE_UNMATCHED_QUOTE_1 = "optionfile_unmatched_quote_1"; + private static final String VM_OPTION_FILE_UNMATCHED_QUOTE_2 = "optionfile_unmatched_quote_2"; /* VM Option file with bad option in it */ private static final String VM_OPTION_FILE_WITH_BAD_OPTION = "optionfile_bad_option"; /* VM Option file with "-XX:VMOptionsFile=" option in it */ @@ -82,10 +86,6 @@ private static final String VM_OPTION_FILE_WITH_SAME_VM_OPTION_FILE = "optionfile_with_same_optionfile"; /* VM Option file without read permissions(not accessible) */ private static final String VM_OPTION_FILE_WITHOUT_READ_PERMISSIONS = "optionfile_wo_read_perm"; - /* VM Option file with long property(file size is 1024 bytes) */ - private static final String VM_OPTION_FILE_WITH_LONG_PROPERTY = "optionfile_long_property"; - /* VM Option file with very long property(file size is more than 1024 bytes) */ - private static final String VM_OPTION_FILE_WITH_VERY_LONG_PROPERTY = "optionfile_very_long_property"; /* VM Option file which does not exist */ private static final String NOT_EXISTING_FILE = "not_exist_junk2123"; @@ -111,6 +111,9 @@ private static OutputAnalyzer output; + private static final String PRINT_PROPERTY_FORMAT = "Property %s=%s"; + private static final String PRINT_VM_OPTION_FORMAT = "Virtual Machine option %s=%s"; + /* * Get absoulte path to file from folder with sources */ @@ -163,6 +166,23 @@ fw.write("-XX:MinHeapFreeRatio=12 -XX:VMOptionsFile=" + (new File(VM_OPTION_FILE_WITH_SAME_VM_OPTION_FILE)).getCanonicalPath()); fw.close(); + /* Create VM option file with long property */ + fw = new FileWriter(VM_OPTION_FILE_WITH_LONG_PROPERTY); + fw.write("-D" + LONG_PROPERTY_NAME + "=" + LONG_PROPERTY_VALUE); + fw.close(); + + /* Create big VM option file */ + fw = new FileWriter(VM_OPTION_FILE_BIG); + fw.write("-XX:MinHeapFreeRatio=17\n"); + for (int i = 0; i < REPEAT_COUNT; i++) { + if (i == REPEAT_COUNT / 2) { + fw.write("-XX:+PrintVMOptions "); + } + fw.write("-Dmy.property=value" + (i + 1) + "\n"); + } + fw.write("-XX:MaxHeapFreeRatio=85\n"); + fw.close(); + /* Copy valid VM option file and change its permission to make it not accessible */ Files.copy(Paths.get(getAbsolutePathFromSource(VM_OPTION_FILE_1)), Paths.get(VM_OPTION_FILE_WITHOUT_READ_PERMISSIONS), @@ -188,15 +208,6 @@ } /* - * Add property name to the application arguments list - */ - private static void addPropertiesToCheck(String... params) { - for (String param : params) { - appParams.add("property=" + param); - } - } - - /* * Add VM option name to the application arguments list */ private static void addVMOptionsToCheck(String... params) { @@ -210,7 +221,6 @@ */ private static void addProperty(String propertyName, String propertyValue) { addVMParam("-D" + propertyName + "=" + propertyValue); - addPropertiesToCheck(propertyName); } /* @@ -263,20 +273,18 @@ /* * Check property value by examining output */ - private static void checkProperty(String property, String value) { - outputShouldContain("Property " + property + "=" + value); + private static void checkProperty(String property, String expectedValue) { + outputShouldContain(String.format(PRINT_PROPERTY_FORMAT, property, expectedValue)); } /* * Check VM Option value by examining output */ - private static void checkVMOption(String vmOption, String value) { - outputShouldContain("VM Option " + vmOption + "=" + value); + private static void checkVMOption(String vmOption, String expectedValue) { + outputShouldContain(String.format(PRINT_VM_OPTION_FORMAT, vmOption, expectedValue)); } private static void testVMOptions() throws Exception { - StringBuilder longProperty = new StringBuilder(); - /* Check that empty VM Option file is accepted without errors */ addVMOptionsFile(VM_OPTION_FILE_EMPTY); @@ -290,7 +298,6 @@ /* Check that parameters are gotten from first VM Option file. Pass absolute path to the VM Option file */ addVMParam("-showversion"); addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_1)); - addPropertiesToCheck("optfile_1"); addVMOptionsToCheck("SurvivorRatio", "MinHeapFreeRatio"); runJavaCheckExitValue(JVM_SUCCESS); @@ -306,7 +313,6 @@ * Pass relative path to the VM Option file in form "vmoptionfile" */ addVMOptionsFile(VM_OPTION_FILE_2); - addPropertiesToCheck("javax.net.ssl.keyStorePassword"); addVMOptionsToCheck("UseGCOverheadLimit", "NewRatio", "MinHeapFreeRatio", "MaxFDLimit", "AlwaysPreTouch"); runJavaCheckExitValue(JVM_SUCCESS); @@ -320,7 +326,6 @@ /* Check that parameters are gotten from third VM Option file which contains a mix of the options */ addVMParam("-showversion"); addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_3)); - addPropertiesToCheck("other.secret.data", "property"); addVMOptionsToCheck("UseGCOverheadLimit", "NewRatio"); runJavaCheckExitValue(JVM_SUCCESS); @@ -331,34 +336,23 @@ checkVMOption("NewRatio", "16"); /* Check that quotes are processed normally in VM Option file */ + addVMParam("-showversion"); addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_QUOTE)); - addPropertiesToCheck("my.quote.single", "my.quote.double", "javax.net.ssl.trustStorePassword"); addVMOptionsToCheck("ErrorFile"); runJavaCheckExitValue(JVM_SUCCESS); + outputShouldContain("interpreted mode"); checkProperty("my.quote.single", "Property in single quote. Here a double qoute\" Add some slashes \\/"); checkProperty("my.quote.double", "Double qoute. Include single '."); checkProperty("javax.net.ssl.trustStorePassword", "data @+NEW"); checkVMOption("ErrorFile", "./my error file"); - /* Check that quotes are processed normally in VM Option file. Pass max size file */ - addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_QUOTE_MAX_SIZE)); - - addPropertiesToCheck("big"); - - runJavaCheckExitValue(JVM_SUCCESS); - - checkProperty("big", String.format("%01016d", 9)); - /* - * Verify that VM Option file accepts a file with 65 properties and with two options on separate + * Verify that VM Option file accepts a file with 70 properties and with two options on separate * lines and properties that use quotes a lot. */ addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_LOT_OF_OPTIONS_QUOTE)); - for (int i = 1; i <= NUM_OF_PROP_IN_FILE_LOT_OF_OPTIONS_QUOTE; i++) { - addPropertiesToCheck(String.format("prop%02d", i)); - } addVMOptionsToCheck("MinHeapFreeRatio", "MaxHeapFreeRatio"); runJavaCheckExitValue(JVM_SUCCESS); @@ -370,17 +364,27 @@ checkVMOption("MaxHeapFreeRatio", "96"); /* - * Verify that VM Option file accepts a file with maximum allowed size(1024 bytes) + * Verify that VM Option file accepts a file with very long property. */ - addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_WITH_LONG_PROPERTY)); - addPropertiesToCheck("very.very.long.property"); + addVMOptionsFile(VM_OPTION_FILE_WITH_LONG_PROPERTY); runJavaCheckExitValue(JVM_SUCCESS); - for (int i = 1; i < 249; i++) { - longProperty.append("long"); - } - longProperty.append("l"); - checkProperty("very.very.long.property", longProperty.toString()); + + checkProperty(LONG_PROPERTY_NAME.replaceAll("'", ""), LONG_PROPERTY_VALUE); + + /* + * Verify that VM Option file accepts a big VM Option file + */ + addVMOptionsFile(VM_OPTION_FILE_BIG); + addVMOptionsToCheck("MinHeapFreeRatio"); + addVMOptionsToCheck("MaxHeapFreeRatio"); + + runJavaCheckExitValue(JVM_SUCCESS); + + outputShouldContain("VM option '+PrintVMOptions'"); + checkProperty("my.property", "value" + REPEAT_COUNT); + checkVMOption("MinHeapFreeRatio", "17"); + checkVMOption("MaxHeapFreeRatio", "85"); } private static ProcessBuilder prepareTestCase(int testCase) throws Exception { @@ -389,11 +393,10 @@ Asserts.assertTrue(0 < testCase && testCase < 6, "testCase should be from 1 to 5"); addVMParam("-showversion"); - addPropertiesToCheck("jto", "jo", "optfile_1", "shared.property"); addVMOptionsToCheck("MinHeapFreeRatio", "SurvivorRatio", "NewRatio"); if (testCase < 5) { - addVMParam("-XX:Flags=flags_file"); + addVMParam("-XX:Flags=flags_file", "-XX:-PrintVMOptions"); addProperty("shared.property", "command_line_before"); addProperty("clb", "unique_command_line_before"); addVMParam("-XX:MinHeapFreeRatio=7"); @@ -404,7 +407,7 @@ } if (testCase < 3) { - addVMParam("-XX:MinHeapFreeRatio=9"); + addVMParam("-XX:MinHeapFreeRatio=9", "-XX:-PrintVMOptions"); addProperty("shared.property", "command_line_after"); addProperty("cla", "unique_command_line_after"); } @@ -414,12 +417,12 @@ if (testCase < 2) { updateEnvironment(pb, JAVA_OPTIONS, "-Dshared.property=somevalue -Djo=unique_java_options " - + "-XX:MinHeapFreeRatio=18 -Dshared.property=java_options -XX:MinHeapFreeRatio=11"); + + "-XX:MinHeapFreeRatio=18 -Dshared.property=java_options -XX:MinHeapFreeRatio=11 -XX:+PrintVMOptions"); } if (testCase < 6) { updateEnvironment(pb, JAVA_TOOL_OPTIONS, "-Dshared.property=qwerty -Djto=unique_java_tool_options " - + "-XX:MinHeapFreeRatio=15 -Dshared.property=java_tool_options -XX:MinHeapFreeRatio=6"); + + "-XX:MinHeapFreeRatio=15 -Dshared.property=java_tool_options -XX:MinHeapFreeRatio=6 -XX:+PrintVMOptions"); } return pb; @@ -451,6 +454,7 @@ runJavaCheckExitValue(pb, JVM_SUCCESS); outputShouldContain("interpreted mode"); + outputShouldContain("VM option '+PrintVMOptions'"); checkProperty("shared.property", "java_options"); checkVMOption("MinHeapFreeRatio", "11"); /* Each category defines its own properties */ @@ -488,6 +492,7 @@ runJavaCheckExitValue(pb, JVM_SUCCESS); outputShouldContain("interpreted mode"); + outputShouldContain("VM option '+PrintVMOptions'"); checkProperty("shared.property", "vmoptfile"); checkVMOption("MinHeapFreeRatio", "22"); @@ -500,6 +505,10 @@ runJavaCheckExitValue(pb, JVM_SUCCESS); +/* + * This check can be enabled after 8136552 is fixed: + * outputShouldNotContain("VM option '+PrintVMOptions'"); + */ checkProperty("shared.property", "command_line_before"); checkVMOption("MinHeapFreeRatio", "7"); @@ -512,6 +521,7 @@ runJavaCheckExitValue(pb, JVM_SUCCESS); + outputShouldContain("VM option '+PrintVMOptions'"); checkProperty("shared.property", "java_tool_options"); checkVMOption("MinHeapFreeRatio", "6"); } @@ -548,13 +558,6 @@ runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1); outputShouldContain("VM options file is only supported on the command line"); - /* Pass VM option file with very long property(more than 1024 bytes) */ - addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_WITH_VERY_LONG_PROPERTY)); - - runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1); - outputShouldContain("Options file"); - outputShouldContain("is larger than 1024 bytes"); - /* Pass VM option file which is not accessible (without read permissions) */ addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_WITHOUT_READ_PERMISSIONS)); @@ -604,15 +607,17 @@ public static class PrintPropertyAndOptions { public static void main(String[] arguments) { - String property; String vmOption; + Properties properties = System.getProperties(); + + for (String propertyName : properties.stringPropertyNames()) { + System.out.println(String.format(PRINT_PROPERTY_FORMAT, propertyName, System.getProperty(propertyName, "NOT DEFINED"))); + } + for (String arg : arguments) { - if (arg.startsWith("property=")) { - property = arg.substring(9); - System.out.println("Property " + property + "=" + System.getProperty(property, "NOT DEFINED")); - } else if (arg.startsWith("vmoption=")) { + if (arg.startsWith("vmoption=")) { vmOption = arg.substring(9); - System.out.println("VM Option " + vmOption + "=" + (new DynamicVMOption(vmOption)).getValue()); + System.out.println(String.format(PRINT_VM_OPTION_FORMAT, vmOption, new DynamicVMOption(vmOption).getValue())); } } } diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_1 --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_1 Fri Oct 02 10:15:46 2015 +0200 +++ b/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_1 Fri Oct 02 11:58:41 2015 +0000 @@ -1,1 +1,1 @@ --Dshared.property=othervalue -XX:MinHeapFreeRatio=13 -Doptfile_1=option_file_1 -Xint -XX:SurvivorRatio=16 -Xminf0.22 -Dshared.property=vmoptfile +-Dshared.property=othervalue -XX:MinHeapFreeRatio=13 -Doptfile_1=option_file_1 -Xint -XX:SurvivorRatio=16 -Xminf0.22 -Dshared.property=vmoptfile -XX:+PrintVMOptions diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_long_property --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_long_property Fri Oct 02 10:15:46 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ --Dvery.very.long.property=longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongl diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_lot_of_options_quote --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_lot_of_options_quote Fri Oct 02 10:15:46 2015 +0200 +++ b/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_lot_of_options_quote Fri Oct 02 11:58:41 2015 +0000 @@ -64,3 +64,9 @@ -Dprop63='63' -Dprop64=64 -Dprop65=65 +-Dprop66=66 +-Dprop67=67 +-Dprop68=68 +-Dprop69=69 +-Dprop70=70 + diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_quote --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_quote Fri Oct 02 10:15:46 2015 +0200 +++ b/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_quote Fri Oct 02 11:58:41 2015 +0000 @@ -1,1 +1,1 @@ -'-Dmy.quote.single'='Property in single quote. Here a double qoute" Add some slashes \/' -D"my.quote.double"="Double qoute. Include single '." -'Xloggc':log"gc.log" -X"X:ErrorFile"=./my' error file' -Djavax.net.ssl.trustStorePassword='data @+NEW' +'-Dmy.quote.single'='Property in single quote. Here a double qoute" Add some slashes \/' -D"my.quote.double"="Double qoute. Include single '." -'Xi'n"t" -X"X:ErrorFile"=./my' error file' -Djavax.net.ssl.trustStorePassword='data @+NEW' diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_quote_max_size --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_quote_max_size Fri Oct 02 10:15:46 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ --Dbig='00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009' \ No newline at end of file diff -r dfd3f4fb2c08 -r 9105fe3ec492 hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_very_long_property --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/optionfile_very_long_property Fri Oct 02 10:15:46 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ --Dvery.very.long.property=longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglo