hotspot/src/share/vm/classfile/classLoader.cpp
changeset 37418 ebb041956080
parent 37248 11a660dbbb8e
child 37490 fd089d3f8cb3
child 38133 78b95467b9f1
equal deleted inserted replaced
37416:9f905b8b3718 37418:ebb041956080
   231   _zip = zip;
   231   _zip = zip;
   232   char *copy = NEW_C_HEAP_ARRAY(char, strlen(zip_name)+1, mtClass);
   232   char *copy = NEW_C_HEAP_ARRAY(char, strlen(zip_name)+1, mtClass);
   233   strcpy(copy, zip_name);
   233   strcpy(copy, zip_name);
   234   _zip_name = copy;
   234   _zip_name = copy;
   235   _is_boot_append = is_boot_append;
   235   _is_boot_append = is_boot_append;
       
   236   _multi_versioned = _unknown;
   236 }
   237 }
   237 
   238 
   238 ClassPathZipEntry::~ClassPathZipEntry() {
   239 ClassPathZipEntry::~ClassPathZipEntry() {
   239   if (ZipClose != NULL) {
   240   if (ZipClose != NULL) {
   240     (*ZipClose)(_zip);
   241     (*ZipClose)(_zip);
   328   return buffer;
   329   return buffer;
   329 }
   330 }
   330 
   331 
   331 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
   332 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
   332   assert(DumpSharedSpaces, "called only at dump time");
   333   assert(DumpSharedSpaces, "called only at dump time");
       
   334   if (_multi_versioned != _unknown) {
       
   335     return (_multi_versioned == _yes) ? true : false;
       
   336   }
   333   jint size;
   337   jint size;
   334   char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, false, CHECK_false);
   338   char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false);
   335   if (buffer != NULL) {
   339   if (buffer != NULL) {
   336     if (strstr(buffer, "Multi-Release: true") != NULL) {
   340     char* p = buffer;
       
   341     for ( ; *p; ++p) *p = tolower(*p);
       
   342     if (strstr(buffer, "multi-release: true") != NULL) {
       
   343       _multi_versioned = _yes;
   337       return true;
   344       return true;
   338     }
   345     }
   339   }
   346   }
       
   347   _multi_versioned = _no;
   340   return false;
   348   return false;
   341 }
   349 }
   342 #endif // INCLUDE_CDS
   350 #endif // INCLUDE_CDS
   343 
   351 
   344 ClassFileStream* ClassPathZipEntry::open_stream(const char* name, TRAPS) {
   352 ClassFileStream* ClassPathZipEntry::open_stream(const char* name, TRAPS) {