< prev index next >

src/hotspot/share/classfile/classLoader.cpp

Print this page

 366     (*JImageClose)(_jimage);
 367     _jimage = NULL;
 368   }
 369 }
 370 
 371 ClassPathImageEntry::ClassPathImageEntry(JImageFile* jimage, const char* name) :
 372   ClassPathEntry(),
 373   _jimage(jimage) {
 374   guarantee(jimage != NULL, "jimage file is null");
 375   guarantee(name != NULL, "jimage file name is null");
 376   assert(_singleton == NULL, "VM supports only one jimage");
 377   DEBUG_ONLY(_singleton = this);
 378   size_t len = strlen(name) + 1;
 379   _name = copy_path(name);
 380 }
 381 
 382 ClassPathImageEntry::~ClassPathImageEntry() {
 383   assert(_singleton == this, "must be");
 384   DEBUG_ONLY(_singleton = NULL);
 385 
 386 
 387   FREE_C_HEAP_ARRAY(const char, _name);
 388   _name = NULL;
 389 
 390   if (_jimage != NULL) {
 391     (*JImageClose)(_jimage);
 392     _jimage = NULL;
 393   }
 394 }
 395 
 396 ClassFileStream* ClassPathImageEntry::open_stream(const char* name, TRAPS) {
 397   return open_stream_for_loader(name, ClassLoaderData::the_null_class_loader_data(), THREAD);
 398 }
 399 
 400 // For a class in a named module, look it up in the jimage file using this syntax:
 401 //    /<module-name>/<package-name>/<base-class>
 402 //
 403 // Assumptions:
 404 //     1. There are no unnamed modules in the jimage file.
 405 //     2. A package is in at most one module in the jimage file.
 406 //
 407 ClassFileStream* ClassPathImageEntry::open_stream_for_loader(const char* name, ClassLoaderData* loader_data, TRAPS) {
 408   jlong size;

 366     (*JImageClose)(_jimage);
 367     _jimage = NULL;
 368   }
 369 }
 370 
 371 ClassPathImageEntry::ClassPathImageEntry(JImageFile* jimage, const char* name) :
 372   ClassPathEntry(),
 373   _jimage(jimage) {
 374   guarantee(jimage != NULL, "jimage file is null");
 375   guarantee(name != NULL, "jimage file name is null");
 376   assert(_singleton == NULL, "VM supports only one jimage");
 377   DEBUG_ONLY(_singleton = this);
 378   size_t len = strlen(name) + 1;
 379   _name = copy_path(name);
 380 }
 381 
 382 ClassPathImageEntry::~ClassPathImageEntry() {
 383   assert(_singleton == this, "must be");
 384   DEBUG_ONLY(_singleton = NULL);
 385 

 386   FREE_C_HEAP_ARRAY(const char, _name);

 387 
 388   if (_jimage != NULL) {
 389     (*JImageClose)(_jimage);
 390     _jimage = NULL;
 391   }
 392 }
 393 
 394 ClassFileStream* ClassPathImageEntry::open_stream(const char* name, TRAPS) {
 395   return open_stream_for_loader(name, ClassLoaderData::the_null_class_loader_data(), THREAD);
 396 }
 397 
 398 // For a class in a named module, look it up in the jimage file using this syntax:
 399 //    /<module-name>/<package-name>/<base-class>
 400 //
 401 // Assumptions:
 402 //     1. There are no unnamed modules in the jimage file.
 403 //     2. A package is in at most one module in the jimage file.
 404 //
 405 ClassFileStream* ClassPathImageEntry::open_stream_for_loader(const char* name, ClassLoaderData* loader_data, TRAPS) {
 406   jlong size;
< prev index next >