< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page

        

*** 1049,1059 **** Klass *k = m->klass(); Handle archived_mirror_h(THREAD, archived_m); ResetMirrorField reset(archived_mirror_h); InstanceKlass::cast(k)->do_nonstatic_fields(&reset); ! log_trace(cds, mirror)("Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT, type2name((BasicType)t), p2i(Universe::_mirrors[t]), p2i(archived_m)); Universe::_mirrors[t] = archived_m; } } --- 1049,1060 ---- Klass *k = m->klass(); Handle archived_mirror_h(THREAD, archived_m); ResetMirrorField reset(archived_mirror_h); InstanceKlass::cast(k)->do_nonstatic_fields(&reset); ! log_trace(cds, heap, mirror)( ! "Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT, type2name((BasicType)t), p2i(Universe::_mirrors[t]), p2i(archived_m)); Universe::_mirrors[t] = archived_m; } }
*** 1131,1141 **** k->set_archived_java_mirror_raw(archived_mirror); k->set_has_raw_archived_mirror(); ResourceMark rm; ! log_trace(cds, mirror)("Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT, k->external_name(), p2i(mirror), p2i(archived_mirror)); return archived_mirror; } --- 1132,1143 ---- k->set_archived_java_mirror_raw(archived_mirror); k->set_has_raw_archived_mirror(); ResourceMark rm; ! log_trace(cds, heap, mirror)( ! "Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT, k->external_name(), p2i(mirror), p2i(archived_mirror)); return archived_mirror; }
*** 1184,1203 **** // The archived mirror's field at _klass_offset is still pointing to the original // klass. Updated the field in the archived mirror to point to the relocated // klass in the archive. Klass *reloc_k = MetaspaceShared::get_relocated_klass(as_Klass(mirror)); ! log_debug(cds, mirror)("Relocate mirror metadata field at _klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT, p2i(as_Klass(mirror)), p2i(reloc_k)); archived_mirror->metadata_field_put(_klass_offset, reloc_k); // The field at _array_klass_offset is pointing to the original one dimension // higher array klass if exists. Relocate the pointer. Klass *arr = array_klass_acquire(mirror); if (arr != NULL) { Klass *reloc_arr = MetaspaceShared::get_relocated_klass(arr); ! log_debug(cds, mirror)("Relocate mirror metadata field at _array_klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT, p2i(arr), p2i(reloc_arr)); archived_mirror->metadata_field_put(_array_klass_offset, reloc_arr); } return archived_mirror; } --- 1186,1207 ---- // The archived mirror's field at _klass_offset is still pointing to the original // klass. Updated the field in the archived mirror to point to the relocated // klass in the archive. Klass *reloc_k = MetaspaceShared::get_relocated_klass(as_Klass(mirror)); ! log_debug(cds, heap, mirror)( ! "Relocate mirror metadata field at _klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT, p2i(as_Klass(mirror)), p2i(reloc_k)); archived_mirror->metadata_field_put(_klass_offset, reloc_k); // The field at _array_klass_offset is pointing to the original one dimension // higher array klass if exists. Relocate the pointer. Klass *arr = array_klass_acquire(mirror); if (arr != NULL) { Klass *reloc_arr = MetaspaceShared::get_relocated_klass(arr); ! log_debug(cds, heap, mirror)( ! "Relocate mirror metadata field at _array_klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT, p2i(arr), p2i(reloc_arr)); archived_mirror->metadata_field_put(_array_klass_offset, reloc_arr); } return archived_mirror; }
*** 1245,1255 **** k->clear_has_raw_archived_mirror(); set_mirror_module_field(k, mirror, module, THREAD); ResourceMark rm; ! log_trace(cds, mirror)("Restored %s archived mirror " PTR_FORMAT, k->external_name(), p2i(mirror())); return true; } #endif // INCLUDE_CDS_JAVA_HEAP --- 1249,1260 ---- k->clear_has_raw_archived_mirror(); set_mirror_module_field(k, mirror, module, THREAD); ResourceMark rm; ! log_trace(cds, heap, mirror)( ! "Restored %s archived mirror " PTR_FORMAT, k->external_name(), p2i(mirror())); return true; } #endif // INCLUDE_CDS_JAVA_HEAP
*** 4271,4280 **** --- 4276,4288 ---- int java_lang_AssertionStatusDirectives::deflt_offset; int java_nio_Buffer::_limit_offset; int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset; int reflect_ConstantPool::_oop_offset; int reflect_UnsafeStaticFieldAccessorImpl::_base_offset; + int jdk_internal_module_ArchivedModuleGraph::_archivedSystemModules_offset; + int jdk_internal_module_ArchivedModuleGraph::_archivedModuleFinder_offset; + int jdk_internal_module_ArchivedModuleGraph::_archivedMainModule_offset; #define STACKTRACEELEMENT_FIELDS_DO(macro) \ macro(declaringClassObject_offset, k, "declaringClassObject", class_signature, false); \ macro(classLoaderName_offset, k, "classLoaderName", string_signature, false); \ macro(moduleName_offset, k, "moduleName", string_signature, false); \
*** 4433,4442 **** --- 4441,4467 ---- static int member_offset(int hardcoded_offset) { return (hardcoded_offset * heapOopSize) + instanceOopDesc::base_offset_in_bytes(); } + #define MODULEBOOTSTRAP_FIELDS_DO(macro) \ + macro(_archivedSystemModules_offset, k, "archivedSystemModules", systemModules_signature, true); \ + macro(_archivedModuleFinder_offset, k, "archivedModuleFinder", moduleFinder_signature, true); \ + macro(_archivedMainModule_offset, k, "archivedMainModule", string_signature, true) + + void jdk_internal_module_ArchivedModuleGraph::compute_offsets() { + InstanceKlass* k = SystemDictionary::ArchivedModuleGraph_klass(); + assert(k != NULL, "must be loaded"); + MODULEBOOTSTRAP_FIELDS_DO(FIELD_COMPUTE_OFFSET); + } + + #if INCLUDE_CDS + void jdk_internal_module_ArchivedModuleGraph::serialize(SerializeClosure* f) { + MODULEBOOTSTRAP_FIELDS_DO(FIELD_SERIALIZE_OFFSET); + } + #endif + // Compute hard-coded offsets // Invoked before SystemDictionary::initialize, so pre-loaded classes // are not available to determine the offset_of_static_fields. void JavaClasses::compute_hard_coded_offsets() {
*** 4491,4500 **** --- 4516,4527 ---- java_lang_StackTraceElement::compute_offsets(); java_lang_StackFrameInfo::compute_offsets(); java_lang_LiveStackFrameInfo::compute_offsets(); java_util_concurrent_locks_AbstractOwnableSynchronizer::compute_offsets(); + jdk_internal_module_ArchivedModuleGraph::compute_offsets(); + // generated interpreter code wants to know about the offsets we just computed: AbstractAssembler::update_delayed_values(); } #ifndef PRODUCT
< prev index next >