290 strcmp(multi_ver, "force") == 0) &&
291 is_multiple_versioned(THREAD);
292 // command line version setting
293 int version = 0;
294 const int base_version = 8; // JDK8
295 int cur_ver = JDK_Version::current().major_version();
296 if (verstr != NULL) {
297 version = atoi(verstr);
298 if (version < base_version || version > cur_ver) {
299 is_multi_ver = false;
300 // print out warning, do not use assertion here since it will continue to look
301 // for proper version.
302 warning("JDK%d is not supported in multiple version jars", version);
303 }
304 }
305
306 if (is_multi_ver) {
307 int n;
308 char entry_name[JVM_MAXPATHLEN];
309 if (version > 0) {
310 n = jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", version, name);
311 entry_name[n] = '\0';
312 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
313 if (buffer == NULL) {
314 warning("Could not find %s in %s, try to find highest version instead", entry_name, _zip_name);
315 }
316 }
317 if (buffer == NULL) {
318 for (int i = cur_ver; i >= base_version; i--) {
319 n = jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", i, name);
320 entry_name[n] = '\0';
321 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
322 if (buffer != NULL) {
323 break;
324 }
325 }
326 }
327 }
328 }
329 return buffer;
330 }
331
332 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
333 assert(DumpSharedSpaces, "called only at dump time");
334 if (_multi_versioned != _unknown) {
335 return (_multi_versioned == _yes) ? true : false;
336 }
337 jint size;
338 char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false);
339 if (buffer != NULL) {
340 char* p = buffer;
|
290 strcmp(multi_ver, "force") == 0) &&
291 is_multiple_versioned(THREAD);
292 // command line version setting
293 int version = 0;
294 const int base_version = 8; // JDK8
295 int cur_ver = JDK_Version::current().major_version();
296 if (verstr != NULL) {
297 version = atoi(verstr);
298 if (version < base_version || version > cur_ver) {
299 is_multi_ver = false;
300 // print out warning, do not use assertion here since it will continue to look
301 // for proper version.
302 warning("JDK%d is not supported in multiple version jars", version);
303 }
304 }
305
306 if (is_multi_ver) {
307 int n;
308 char entry_name[JVM_MAXPATHLEN];
309 if (version > 0) {
310 jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", version, name);
311 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
312 if (buffer == NULL) {
313 warning("Could not find %s in %s, try to find highest version instead", entry_name, _zip_name);
314 }
315 }
316 if (buffer == NULL) {
317 for (int i = cur_ver; i >= base_version; i--) {
318 jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", i, name);
319 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
320 if (buffer != NULL) {
321 break;
322 }
323 }
324 }
325 }
326 }
327 return buffer;
328 }
329
330 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
331 assert(DumpSharedSpaces, "called only at dump time");
332 if (_multi_versioned != _unknown) {
333 return (_multi_versioned == _yes) ? true : false;
334 }
335 jint size;
336 char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false);
337 if (buffer != NULL) {
338 char* p = buffer;
|