554 log_debug(cds, mirror)("No archived mirror data for %s", external_name()); 555 _java_mirror = NULL; 556 this->clear_has_raw_archived_mirror(); 557 } 558 559 // Only recreate it if not present. A previous attempt to restore may have 560 // gotten an OOM later but keep the mirror if it was created. 561 if (java_mirror() == NULL) { 562 log_trace(cds, mirror)("Recreate mirror for %s", external_name()); 563 java_lang_Class::create_mirror(this, loader, module_handle, protection_domain, CHECK); 564 } 565 } 566 567 #if INCLUDE_CDS_JAVA_HEAP 568 // Used at CDS dump time to access the archived mirror. No GC barrier. 569 oop Klass::archived_java_mirror_raw() { 570 assert(has_raw_archived_mirror(), "must have raw archived mirror"); 571 return CompressedOops::decode(_archived_mirror); 572 } 573 574 // No GC barrier 575 void Klass::set_archived_java_mirror_raw(oop m) { 576 assert(DumpSharedSpaces, "called only during runtime"); 577 _archived_mirror = CompressedOops::encode(m); 578 } 579 #endif // INCLUDE_CDS_JAVA_HEAP 580 581 Klass* Klass::array_klass_or_null(int rank) { 582 EXCEPTION_MARK; 583 // No exception can be thrown by array_klass_impl when called with or_null == true. 584 // (In anycase, the execption mark will fail if it do so) 585 return array_klass_impl(true, rank, THREAD); 586 } 587 588 589 Klass* Klass::array_klass_or_null() { 590 EXCEPTION_MARK; 591 // No exception can be thrown by array_klass_impl when called with or_null == true. 592 // (In anycase, the execption mark will fail if it do so) 593 return array_klass_impl(true, THREAD); | 554 log_debug(cds, mirror)("No archived mirror data for %s", external_name()); 555 _java_mirror = NULL; 556 this->clear_has_raw_archived_mirror(); 557 } 558 559 // Only recreate it if not present. A previous attempt to restore may have 560 // gotten an OOM later but keep the mirror if it was created. 561 if (java_mirror() == NULL) { 562 log_trace(cds, mirror)("Recreate mirror for %s", external_name()); 563 java_lang_Class::create_mirror(this, loader, module_handle, protection_domain, CHECK); 564 } 565 } 566 567 #if INCLUDE_CDS_JAVA_HEAP 568 // Used at CDS dump time to access the archived mirror. No GC barrier. 569 oop Klass::archived_java_mirror_raw() { 570 assert(has_raw_archived_mirror(), "must have raw archived mirror"); 571 return CompressedOops::decode(_archived_mirror); 572 } 573 574 narrowOop Klass::archived_java_mirror_raw_narrow() { 575 assert(has_raw_archived_mirror(), "must have raw archived mirror"); 576 return _archived_mirror; 577 } 578 579 // No GC barrier 580 void Klass::set_archived_java_mirror_raw(oop m) { 581 assert(DumpSharedSpaces, "called only during runtime"); 582 _archived_mirror = CompressedOops::encode(m); 583 } 584 #endif // INCLUDE_CDS_JAVA_HEAP 585 586 Klass* Klass::array_klass_or_null(int rank) { 587 EXCEPTION_MARK; 588 // No exception can be thrown by array_klass_impl when called with or_null == true. 589 // (In anycase, the execption mark will fail if it do so) 590 return array_klass_impl(true, rank, THREAD); 591 } 592 593 594 Klass* Klass::array_klass_or_null() { 595 EXCEPTION_MARK; 596 // No exception can be thrown by array_klass_impl when called with or_null == true. 597 // (In anycase, the execption mark will fail if it do so) 598 return array_klass_impl(true, THREAD); |