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;
|