61 62 63 void FileMapInfo::fail_stop(const char *msg, ...) { 64 va_list ap; 65 va_start(ap, msg); 66 fail(msg, ap); // Never returns. 67 va_end(ap); // for completeness. 68 } 69 70 71 // Complain and continue. Recoverable errors during the reading of the 72 // archive file may continue (with sharing disabled). 73 // 74 // If we continue, then disable shared spaces and close the file. 75 76 void FileMapInfo::fail_continue(const char *msg, ...) { 77 va_list ap; 78 va_start(ap, msg); 79 if (RequireSharedSpaces) { 80 fail(msg, ap); 81 } 82 va_end(ap); 83 UseSharedSpaces = false; 84 close(); 85 } 86 87 // Fill in the fileMapInfo structure with data about this VM instance. 88 89 // This method copies the vm version info into header_version. If the version is too 90 // long then a truncated version, which has a hash code appended to it, is copied. 91 // 92 // Using a template enables this method to verify that header_version is an array of 93 // length JVM_IDENT_MAX. This ensures that the code that writes to the CDS file and 94 // the code that reads the CDS file will both use the same size buffer. Hence, will 95 // use identical truncation. This is necessary for matching of truncated versions. 96 template <int N> static void get_header_version(char (&header_version) [N]) { 97 assert(N == JVM_IDENT_MAX, "Bad header_version size"); 98 99 const char *vm_version = VM_Version::internal_vm_info_string(); 100 const int version_len = (int)strlen(vm_version); | 61 62 63 void FileMapInfo::fail_stop(const char *msg, ...) { 64 va_list ap; 65 va_start(ap, msg); 66 fail(msg, ap); // Never returns. 67 va_end(ap); // for completeness. 68 } 69 70 71 // Complain and continue. Recoverable errors during the reading of the 72 // archive file may continue (with sharing disabled). 73 // 74 // If we continue, then disable shared spaces and close the file. 75 76 void FileMapInfo::fail_continue(const char *msg, ...) { 77 va_list ap; 78 va_start(ap, msg); 79 if (RequireSharedSpaces) { 80 fail(msg, ap); 81 } else { 82 if (PrintMiscellaneous && Verbose) { 83 tty->print_cr("Attempt to use shared archive failed, continue with sharing disabled"); 84 } 85 } 86 va_end(ap); 87 UseSharedSpaces = false; 88 close(); 89 } 90 91 // Fill in the fileMapInfo structure with data about this VM instance. 92 93 // This method copies the vm version info into header_version. If the version is too 94 // long then a truncated version, which has a hash code appended to it, is copied. 95 // 96 // Using a template enables this method to verify that header_version is an array of 97 // length JVM_IDENT_MAX. This ensures that the code that writes to the CDS file and 98 // the code that reads the CDS file will both use the same size buffer. Hence, will 99 // use identical truncation. This is necessary for matching of truncated versions. 100 template <int N> static void get_header_version(char (&header_version) [N]) { 101 assert(N == JVM_IDENT_MAX, "Bad header_version size"); 102 103 const char *vm_version = VM_Version::internal_vm_info_string(); 104 const int version_len = (int)strlen(vm_version); |