< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page

        

*** 34,45 **** #include "code/pcDesc.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/linkResolver.hpp" #include "logging/log.hpp" #include "logging/logStream.hpp" #include "memory/oopFactory.hpp" - #include "memory/metaspaceShared.inline.hpp" #include "memory/resourceArea.hpp" #include "memory/universe.hpp" #include "oops/fieldStreams.hpp" #include "oops/instanceKlass.hpp" #include "oops/instanceMirrorKlass.hpp" --- 34,46 ---- #include "code/pcDesc.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/linkResolver.hpp" #include "logging/log.hpp" #include "logging/logStream.hpp" + #include "memory/heapShared.inline.hpp" + #include "memory/metaspaceShared.hpp" #include "memory/oopFactory.hpp" #include "memory/resourceArea.hpp" #include "memory/universe.hpp" #include "oops/fieldStreams.hpp" #include "oops/instanceKlass.hpp" #include "oops/instanceMirrorKlass.hpp"
*** 748,758 **** break; case T_OBJECT: { assert(fd->signature() == vmSymbols::string_signature(), "just checking"); ! if (DumpSharedSpaces && MetaspaceShared::is_archive_object(mirror())) { // Archive the String field and update the pointer. oop s = mirror()->obj_field(fd->offset()); oop archived_s = StringTable::create_archived_string(s, CHECK); mirror()->obj_field_put(fd->offset(), archived_s); } else { --- 749,759 ---- break; case T_OBJECT: { assert(fd->signature() == vmSymbols::string_signature(), "just checking"); ! if (DumpSharedSpaces && HeapShared::is_archived_object(mirror())) { // Archive the String field and update the pointer. oop s = mirror()->obj_field(fd->offset()); oop archived_s = StringTable::create_archived_string(s, CHECK); mirror()->obj_field_put(fd->offset(), archived_s); } else {
*** 786,796 **** } } } if (k->is_shared() && k->has_raw_archived_mirror()) { ! if (MetaspaceShared::open_archive_heap_region_mapped()) { bool present = restore_archived_mirror(k, Handle(), Handle(), Handle(), CHECK); assert(present, "Missing archived mirror for %s", k->external_name()); return; } else { k->set_java_mirror_handle(NULL); --- 787,797 ---- } } } if (k->is_shared() && k->has_raw_archived_mirror()) { ! if (HeapShared::open_archive_heap_region_mapped()) { bool present = restore_archived_mirror(k, Handle(), Handle(), Handle(), CHECK); assert(present, "Missing archived mirror for %s", k->external_name()); return; } else { k->set_java_mirror_handle(NULL);
*** 1009,1026 **** } } }; void java_lang_Class::archive_basic_type_mirrors(TRAPS) { ! assert(MetaspaceShared::is_heap_object_archiving_allowed(), ! "MetaspaceShared::is_heap_object_archiving_allowed() must be true"); for (int t = 0; t <= T_VOID; t++) { oop m = Universe::_mirrors[t]; if (m != NULL) { // Update the field at _array_klass_offset to point to the relocated array klass. ! oop archived_m = MetaspaceShared::archive_heap_object(m, THREAD); assert(archived_m != NULL, "sanity"); Klass *ak = (Klass*)(archived_m->metadata_field(_array_klass_offset)); assert(ak != NULL || t == T_VOID, "should not be NULL"); if (ak != NULL) { Klass *reloc_ak = MetaspaceShared::get_relocated_klass(ak); --- 1010,1027 ---- } } }; void java_lang_Class::archive_basic_type_mirrors(TRAPS) { ! assert(HeapShared::is_heap_object_archiving_allowed(), ! "HeapShared::is_heap_object_archiving_allowed() must be true"); for (int t = 0; t <= T_VOID; t++) { oop m = Universe::_mirrors[t]; if (m != NULL) { // Update the field at _array_klass_offset to point to the relocated array klass. ! oop archived_m = HeapShared::archive_heap_object(m, THREAD); assert(archived_m != NULL, "sanity"); Klass *ak = (Klass*)(archived_m->metadata_field(_array_klass_offset)); assert(ak != NULL || t == T_VOID, "should not be NULL"); if (ak != NULL) { Klass *reloc_ak = MetaspaceShared::get_relocated_klass(ak);
*** 1069,1080 **** // The _has_archived_raw_mirror flag is cleared at runtime when the // archived mirror is restored. If archived java heap data cannot // be used at runtime, new mirror object is created for the shared // class. The _has_archived_raw_mirror is cleared also during the process. oop java_lang_Class::archive_mirror(Klass* k, TRAPS) { ! assert(MetaspaceShared::is_heap_object_archiving_allowed(), ! "MetaspaceShared::is_heap_object_archiving_allowed() must be true"); // Mirror is already archived if (k->has_raw_archived_mirror()) { assert(k->archived_java_mirror_raw() != NULL, "no archived mirror"); return k->archived_java_mirror_raw(); --- 1070,1081 ---- // The _has_archived_raw_mirror flag is cleared at runtime when the // archived mirror is restored. If archived java heap data cannot // be used at runtime, new mirror object is created for the shared // class. The _has_archived_raw_mirror is cleared also during the process. oop java_lang_Class::archive_mirror(Klass* k, TRAPS) { ! assert(HeapShared::is_heap_object_archiving_allowed(), ! "HeapShared::is_heap_object_archiving_allowed() must be true"); // Mirror is already archived if (k->has_raw_archived_mirror()) { assert(k->archived_java_mirror_raw() != NULL, "no archived mirror"); return k->archived_java_mirror_raw();
*** 1099,1109 **** return NULL; } } // Now start archiving the mirror object ! oop archived_mirror = MetaspaceShared::archive_heap_object(mirror, THREAD); if (archived_mirror == NULL) { return NULL; } archived_mirror = process_archived_mirror(k, mirror, archived_mirror, THREAD); --- 1100,1110 ---- return NULL; } } // Now start archiving the mirror object ! oop archived_mirror = HeapShared::archive_heap_object(mirror, THREAD); if (archived_mirror == NULL) { return NULL; } archived_mirror = process_archived_mirror(k, mirror, archived_mirror, THREAD);
*** 1137,1147 **** if (k->is_array_klass()) { oop archived_comp_mirror; if (k->is_typeArray_klass()) { // The primitive type mirrors are already archived. Get the archived mirror. oop comp_mirror = java_lang_Class::component_mirror(mirror); ! archived_comp_mirror = MetaspaceShared::find_archived_heap_object(comp_mirror); assert(archived_comp_mirror != NULL, "Must be"); } else { assert(k->is_objArray_klass(), "Must be"); Klass* element_klass = ObjArrayKlass::cast(k)->element_klass(); assert(element_klass != NULL, "Must have an element klass"); --- 1138,1148 ---- if (k->is_array_klass()) { oop archived_comp_mirror; if (k->is_typeArray_klass()) { // The primitive type mirrors are already archived. Get the archived mirror. oop comp_mirror = java_lang_Class::component_mirror(mirror); ! archived_comp_mirror = HeapShared::find_archived_heap_object(comp_mirror); assert(archived_comp_mirror != NULL, "Must be"); } else { assert(k->is_objArray_klass(), "Must be"); Klass* element_klass = ObjArrayKlass::cast(k)->element_klass(); assert(element_klass != NULL, "Must have an element klass");
*** 1200,1219 **** assert(fixup_mirror_list() != NULL, "fixup_mirror_list not initialized"); fixup_mirror_list()->push(k); return true; } ! oop m = MetaspaceShared::materialize_archived_object(k->archived_java_mirror_raw_narrow()); if (m == NULL) { return false; } log_debug(cds, mirror)("Archived mirror is: " PTR_FORMAT, p2i(m)); // mirror is archived, restore ! assert(MetaspaceShared::is_archive_object(m), "must be archived mirror object"); Handle mirror(THREAD, m); if (!k->is_array_klass()) { // - local static final fields with initial values were initialized at dump time --- 1201,1220 ---- assert(fixup_mirror_list() != NULL, "fixup_mirror_list not initialized"); fixup_mirror_list()->push(k); return true; } ! oop m = HeapShared::materialize_archived_object(k->archived_java_mirror_raw_narrow()); if (m == NULL) { return false; } log_debug(cds, mirror)("Archived mirror is: " PTR_FORMAT, p2i(m)); // mirror is archived, restore ! assert(HeapShared::is_archived_object(m), "must be archived mirror object"); Handle mirror(THREAD, m); if (!k->is_array_klass()) { // - local static final fields with initial values were initialized at dump time
< prev index next >