< prev index next >

src/share/vm/classfile/classLoader.cpp

Print this page
rev 11179 : 8140594: Various minor code improvements (compiler)
Reviewed-by: thartmann


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




 288     const char* verstr = Arguments::get_property("jdk.util.jar.version");
 289     bool is_multi_ver = (multi_ver == NULL ||
 290                          strcmp(multi_ver, "true") == 0 ||
 291                          strcmp(multi_ver, "force")  == 0) &&
 292                          is_multiple_versioned(THREAD);
 293     // command line version setting
 294     int version = 0;
 295     const int base_version = 8; // JDK8
 296     int cur_ver = JDK_Version::current().major_version();
 297     if (verstr != NULL) {
 298       version = atoi(verstr);
 299       if (version < base_version || version > cur_ver) {
 300         is_multi_ver = false;
 301         // print out warning, do not use assertion here since it will continue to look
 302         // for proper version.
 303         warning("JDK%d is not supported in multiple version jars", version);
 304       }
 305     }
 306 
 307     if (is_multi_ver) {

 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;


< prev index next >