--- old/src/hotspot/share/classfile/javaClasses.cpp 2018-08-14 21:28:15.944791458 -0700 +++ new/src/hotspot/share/classfile/javaClasses.cpp 2018-08-14 21:28:15.612778723 -0700 @@ -209,7 +209,7 @@ } #if INCLUDE_CDS -void java_lang_String::serialize(SerializeClosure* f) { +void java_lang_String::serialize_offsets(SerializeClosure* f) { STRING_FIELDS_DO(FIELD_SERIALIZE_OFFSET); f->do_u4((u4*)&initialized); } @@ -1534,7 +1534,7 @@ } #if INCLUDE_CDS -void java_lang_Class::serialize(SerializeClosure* f) { +void java_lang_Class::serialize_offsets(SerializeClosure* f) { f->do_u4((u4*)&offsets_computed); f->do_u4((u4*)&_init_lock_offset); @@ -1608,7 +1608,7 @@ } #if INCLUDE_CDS -void java_lang_Thread::serialize(SerializeClosure* f) { +void java_lang_Thread::serialize_offsets(SerializeClosure* f) { THREAD_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -1860,7 +1860,7 @@ } #if INCLUDE_CDS -void java_lang_ThreadGroup::serialize(SerializeClosure* f) { +void java_lang_ThreadGroup::serialize_offsets(SerializeClosure* f) { THREADGROUP_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -1878,7 +1878,7 @@ } #if INCLUDE_CDS -void java_lang_Throwable::serialize(SerializeClosure* f) { +void java_lang_Throwable::serialize_offsets(SerializeClosure* f) { THROWABLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -2654,7 +2654,7 @@ } #if INCLUDE_CDS -void java_lang_StackFrameInfo::serialize(SerializeClosure* f) { +void java_lang_StackFrameInfo::serialize_offsets(SerializeClosure* f) { STACKFRAMEINFO_FIELDS_DO(FIELD_SERIALIZE_OFFSET); STACKFRAMEINFO_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET); } @@ -2672,7 +2672,7 @@ } #if INCLUDE_CDS -void java_lang_LiveStackFrameInfo::serialize(SerializeClosure* f) { +void java_lang_LiveStackFrameInfo::serialize_offsets(SerializeClosure* f) { LIVESTACKFRAMEINFO_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -2686,7 +2686,7 @@ } #if INCLUDE_CDS -void java_lang_reflect_AccessibleObject::serialize(SerializeClosure* f) { +void java_lang_reflect_AccessibleObject::serialize_offsets(SerializeClosure* f) { ACCESSIBLEOBJECT_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -2727,7 +2727,7 @@ } #if INCLUDE_CDS -void java_lang_reflect_Method::serialize(SerializeClosure* f) { +void java_lang_reflect_Method::serialize_offsets(SerializeClosure* f) { METHOD_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -2914,7 +2914,7 @@ } #if INCLUDE_CDS -void java_lang_reflect_Constructor::serialize(SerializeClosure* f) { +void java_lang_reflect_Constructor::serialize_offsets(SerializeClosure* f) { CONSTRUCTOR_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3063,7 +3063,7 @@ } #if INCLUDE_CDS -void java_lang_reflect_Field::serialize(SerializeClosure* f) { +void java_lang_reflect_Field::serialize_offsets(SerializeClosure* f) { FIELD_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3186,7 +3186,7 @@ } #if INCLUDE_CDS -void reflect_ConstantPool::serialize(SerializeClosure* f) { +void reflect_ConstantPool::serialize_offsets(SerializeClosure* f) { CONSTANTPOOL_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3203,7 +3203,7 @@ } #if INCLUDE_CDS -void java_lang_reflect_Parameter::serialize(SerializeClosure* f) { +void java_lang_reflect_Parameter::serialize_offsets(SerializeClosure* f) { PARAMETER_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3281,7 +3281,7 @@ } #if INCLUDE_CDS -void java_lang_Module::serialize(SerializeClosure* f) { +void java_lang_Module::serialize_offsets(SerializeClosure* f) { MODULE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); MODULE_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET); } @@ -3371,7 +3371,7 @@ } #if INCLUDE_CDS -void reflect_UnsafeStaticFieldAccessorImpl::serialize(SerializeClosure* f) { +void reflect_UnsafeStaticFieldAccessorImpl::serialize_offsets(SerializeClosure* f) { UNSAFESTATICFIELDACCESSORIMPL_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3543,7 +3543,7 @@ } #if INCLUDE_CDS -void java_lang_ref_SoftReference::serialize(SerializeClosure* f) { +void java_lang_ref_SoftReference::serialize_offsets(SerializeClosure* f) { SOFTREFERENCE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3584,7 +3584,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_DirectMethodHandle::serialize(SerializeClosure* f) { +void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f) { DIRECTMETHODHANDLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3616,7 +3616,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_MethodHandle::serialize(SerializeClosure* f) { +void java_lang_invoke_MethodHandle::serialize_offsets(SerializeClosure* f) { METHODHANDLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3635,7 +3635,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_MemberName::serialize(SerializeClosure* f) { +void java_lang_invoke_MemberName::serialize_offsets(SerializeClosure* f) { MEMBERNAME_FIELDS_DO(FIELD_SERIALIZE_OFFSET); MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET); } @@ -3648,7 +3648,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_ResolvedMethodName::serialize(SerializeClosure* f) { +void java_lang_invoke_ResolvedMethodName::serialize_offsets(SerializeClosure* f) { RESOLVEDMETHOD_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET); } #endif @@ -3663,7 +3663,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_LambdaForm::serialize(SerializeClosure* f) { +void java_lang_invoke_LambdaForm::serialize_offsets(SerializeClosure* f) { LAMBDAFORM_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3815,7 +3815,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_MethodType::serialize(SerializeClosure* f) { +void java_lang_invoke_MethodType::serialize_offsets(SerializeClosure* f) { METHODTYPE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3909,7 +3909,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_CallSite::serialize(SerializeClosure* f) { +void java_lang_invoke_CallSite::serialize_offsets(SerializeClosure* f) { CALLSITE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -3931,7 +3931,7 @@ } #if INCLUDE_CDS -void java_lang_invoke_MethodHandleNatives_CallSiteContext::serialize(SerializeClosure* f) { +void java_lang_invoke_MethodHandleNatives_CallSiteContext::serialize_offsets(SerializeClosure* f) { CALLSITECONTEXT_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET); } #endif @@ -3963,7 +3963,7 @@ } #if INCLUDE_CDS -void java_security_AccessControlContext::serialize(SerializeClosure* f) { +void java_security_AccessControlContext::serialize_offsets(SerializeClosure* f) { ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4029,7 +4029,7 @@ } #if INCLUDE_CDS -void java_lang_ClassLoader::serialize(SerializeClosure* f) { +void java_lang_ClassLoader::serialize_offsets(SerializeClosure* f) { CLASSLOADER_FIELDS_DO(FIELD_SERIALIZE_OFFSET); CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET); } @@ -4143,7 +4143,7 @@ } #if INCLUDE_CDS -void java_lang_System::serialize(SerializeClosure* f) { +void java_lang_System::serialize_offsets(SerializeClosure* f) { SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4274,7 +4274,7 @@ } #if INCLUDE_CDS -void java_lang_StackTraceElement::serialize(SerializeClosure* f) { +void java_lang_StackTraceElement::serialize_offsets(SerializeClosure* f) { STACKTRACEELEMENT_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4349,7 +4349,7 @@ } #if INCLUDE_CDS -void java_lang_AssertionStatusDirectives::serialize(SerializeClosure* f) { +void java_lang_AssertionStatusDirectives::serialize_offsets(SerializeClosure* f) { ASSERTIONSTATUSDIRECTIVES_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4390,7 +4390,7 @@ } #if INCLUDE_CDS -void java_nio_Buffer::serialize(SerializeClosure* f) { +void java_nio_Buffer::serialize_offsets(SerializeClosure* f) { BUFFER_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4409,7 +4409,7 @@ } #if INCLUDE_CDS -void java_util_concurrent_locks_AbstractOwnableSynchronizer::serialize(SerializeClosure* f) { +void java_util_concurrent_locks_AbstractOwnableSynchronizer::serialize_offsets(SerializeClosure* f) { AOS_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4428,7 +4428,7 @@ } #if INCLUDE_CDS -void java_lang_Integer_IntegerCache::serialize(SerializeClosure* f) { +void java_lang_Integer_IntegerCache::serialize_offsets(SerializeClosure* f) { INTEGERCACHE_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4446,7 +4446,7 @@ } #if INCLUDE_CDS -void jdk_internal_module_ArchivedModuleGraph::serialize(SerializeClosure* f) { +void jdk_internal_module_ArchivedModuleGraph::serialize_offsets(SerializeClosure* f) { ARCHIVEDMODULEGRAPH_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4461,7 +4461,7 @@ } #if INCLUDE_CDS -void java_lang_module_Configuration::serialize(SerializeClosure* f) { +void java_lang_module_Configuration::serialize_offsets(SerializeClosure* f) { CONFIGURATION_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4476,7 +4476,7 @@ } #if INCLUDE_CDS -void java_util_ImmutableCollections_ListN::serialize(SerializeClosure* f) { +void java_util_ImmutableCollections_ListN::serialize_offsets(SerializeClosure* f) { LISTN_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4491,7 +4491,7 @@ } #if INCLUDE_CDS -void java_util_ImmutableCollections_SetN::serialize(SerializeClosure* f) { +void java_util_ImmutableCollections_SetN::serialize_offsets(SerializeClosure* f) { SETN_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4506,7 +4506,7 @@ } #if INCLUDE_CDS -void java_util_ImmutableCollections_MapN::serialize(SerializeClosure* f) { +void java_util_ImmutableCollections_MapN::serialize_offsets(SerializeClosure* f) { MAPN_FIELDS_DO(FIELD_SERIALIZE_OFFSET); } #endif @@ -4527,6 +4527,7 @@ java_lang_ref_Reference::discovered_offset = member_offset(java_lang_ref_Reference::hc_discovered_offset); } +#define DO_COMPUTE_OFFSETS(k) k::compute_offsets(); // Compute non-hard-coded field offsets of all the classes in this file void JavaClasses::compute_offsets() { @@ -4534,52 +4535,23 @@ return; // field offsets are loaded from archive } - // java_lang_Class::compute_offsets was called earlier in bootstrap - java_lang_System::compute_offsets(); - java_lang_ClassLoader::compute_offsets(); - java_lang_Throwable::compute_offsets(); - java_lang_Thread::compute_offsets(); - java_lang_ThreadGroup::compute_offsets(); - java_lang_AssertionStatusDirectives::compute_offsets(); - java_lang_ref_SoftReference::compute_offsets(); - java_lang_invoke_MethodHandle::compute_offsets(); - java_lang_invoke_DirectMethodHandle::compute_offsets(); - java_lang_invoke_MemberName::compute_offsets(); - java_lang_invoke_ResolvedMethodName::compute_offsets(); - java_lang_invoke_LambdaForm::compute_offsets(); - java_lang_invoke_MethodType::compute_offsets(); - java_lang_invoke_CallSite::compute_offsets(); - java_lang_invoke_MethodHandleNatives_CallSiteContext::compute_offsets(); - java_security_AccessControlContext::compute_offsets(); - // Initialize reflection classes. The layouts of these classes - // changed with the new reflection implementation in JDK 1.4, and - // since the Universe doesn't know what JDK version it is until this - // point we defer computation of these offsets until now. - java_lang_reflect_AccessibleObject::compute_offsets(); - java_lang_reflect_Method::compute_offsets(); - java_lang_reflect_Constructor::compute_offsets(); - java_lang_reflect_Field::compute_offsets(); - java_nio_Buffer::compute_offsets(); - reflect_ConstantPool::compute_offsets(); - reflect_UnsafeStaticFieldAccessorImpl::compute_offsets(); - java_lang_reflect_Parameter::compute_offsets(); - java_lang_Module::compute_offsets(); - java_lang_StackTraceElement::compute_offsets(); - java_lang_StackFrameInfo::compute_offsets(); - java_lang_LiveStackFrameInfo::compute_offsets(); - java_util_concurrent_locks_AbstractOwnableSynchronizer::compute_offsets(); - - java_lang_Integer_IntegerCache::compute_offsets(); - java_lang_module_Configuration::compute_offsets(); - java_util_ImmutableCollections_ListN::compute_offsets(); - java_util_ImmutableCollections_MapN::compute_offsets(); - java_util_ImmutableCollections_SetN::compute_offsets(); - jdk_internal_module_ArchivedModuleGraph::compute_offsets(); + // We have already called the compute_offsets() of the + // BASIC_JAVA_CLASSES_DO_PART1 classes (java_lang_String and java_lang_Class); + BASIC_JAVA_CLASSES_DO_PART2(DO_COMPUTE_OFFSETS); // generated interpreter code wants to know about the offsets we just computed: AbstractAssembler::update_delayed_values(); } +#if INCLUDE_CDS +#define DO_SERIALIZE_OFFSETS(k) k::serialize_offsets(soc); + +void JavaClasses::serialize_offsets(SerializeClosure* soc) { + BASIC_JAVA_CLASSES_DO(DO_SERIALIZE_OFFSETS); +} +#endif + + #ifndef PRODUCT // These functions exist to assert the validity of hard-coded field offsets to guard --- old/src/hotspot/share/classfile/javaClasses.hpp 2018-08-14 21:28:17.068834573 -0700 +++ new/src/hotspot/share/classfile/javaClasses.hpp 2018-08-14 21:28:16.740821991 -0700 @@ -47,6 +47,52 @@ // correspondingly. The names in the enums must be identical to the actual field // names in order for the verification code to work. +#define BASIC_JAVA_CLASSES_DO_PART1(f) \ + f(java_lang_Class) \ + f(java_lang_String) \ + //end + +#define BASIC_JAVA_CLASSES_DO_PART2(f) \ + f(java_lang_System) \ + f(java_lang_ClassLoader) \ + f(java_lang_Throwable) \ + f(java_lang_Thread) \ + f(java_lang_ThreadGroup) \ + f(java_lang_AssertionStatusDirectives) \ + f(java_lang_ref_SoftReference) \ + f(java_lang_invoke_MethodHandle) \ + f(java_lang_invoke_DirectMethodHandle) \ + f(java_lang_invoke_MemberName) \ + f(java_lang_invoke_ResolvedMethodName) \ + f(java_lang_invoke_LambdaForm) \ + f(java_lang_invoke_MethodType) \ + f(java_lang_invoke_CallSite) \ + f(java_lang_invoke_MethodHandleNatives_CallSiteContext) \ + f(java_security_AccessControlContext) \ + f(java_lang_reflect_AccessibleObject) \ + f(java_lang_reflect_Method) \ + f(java_lang_reflect_Constructor) \ + f(java_lang_reflect_Field) \ + f(java_nio_Buffer) \ + f(reflect_ConstantPool) \ + f(reflect_UnsafeStaticFieldAccessorImpl) \ + f(java_lang_reflect_Parameter) \ + f(java_lang_Module) \ + f(java_lang_StackTraceElement) \ + f(java_lang_StackFrameInfo) \ + f(java_lang_LiveStackFrameInfo) \ + f(java_util_concurrent_locks_AbstractOwnableSynchronizer) \ + f(jdk_internal_module_ArchivedModuleGraph) \ + f(java_lang_Integer_IntegerCache) \ + f(java_lang_module_Configuration) \ + f(java_util_ImmutableCollections_ListN) \ + f(java_util_ImmutableCollections_MapN) \ + f(java_util_ImmutableCollections_SetN) \ + //end + +#define BASIC_JAVA_CLASSES_DO(f) \ + BASIC_JAVA_CLASSES_DO_PART1(f) \ + BASIC_JAVA_CLASSES_DO_PART2(f) // Interface to java.lang.String objects @@ -71,7 +117,7 @@ }; static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Instance creation static Handle create_from_unicode(jchar* unicode, int len, TRAPS); @@ -224,7 +270,7 @@ static oop create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS); // Archiving - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN; static oop archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL); static oop process_archived_mirror(Klass* k, oop mirror, oop archived_mirror, Thread *THREAD) @@ -317,7 +363,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Instance creation static oop create(); @@ -419,7 +465,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // parent ThreadGroup static oop parent(oop java_thread_group); @@ -500,7 +546,7 @@ static void print_stack_usage(Handle stream); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Allocate space for backtrace (created but stack trace not filled in) static void allocate_backtrace(Handle throwable, TRAPS); @@ -531,7 +577,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static jboolean override(oop reflect); @@ -564,7 +610,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Allocation static Handle create(TRAPS); @@ -635,7 +681,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Allocation static Handle create(TRAPS); @@ -695,7 +741,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Allocation static Handle create(TRAPS); @@ -752,7 +798,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Allocation static Handle create(TRAPS); @@ -784,7 +830,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Allocation static Handle create(Handle loader, Handle module_name, TRAPS); @@ -815,7 +861,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Allocation static Handle create(TRAPS); @@ -839,7 +885,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; static int base_offset() { return _base_offset; @@ -944,7 +990,7 @@ static void set_clock(jlong value); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; // Interface to java.lang.invoke.MethodHandle objects @@ -961,7 +1007,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static oop type(oop mh); @@ -992,7 +1038,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static oop member(oop mh); @@ -1019,7 +1065,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static oop vmentry(oop lform); @@ -1052,7 +1098,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; static int vmtarget_offset_in_bytes() { return _vmtarget_offset; } @@ -1091,7 +1137,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static oop clazz(oop mname); static void set_clazz(oop mname, oop clazz); @@ -1156,7 +1202,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static oop rtype(oop mt); static objArrayOop ptypes(oop mt); @@ -1192,7 +1238,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static oop target( oop site); static void set_target( oop site, oop target); @@ -1226,7 +1272,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Accessors static DependencyContext vmdependencies(oop context); @@ -1250,7 +1296,7 @@ static void compute_offsets(); public: - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; static oop create(objArrayHandle context, bool isPrivileged, Handle privileged_context, TRAPS); static bool is_authorized(Handle context); @@ -1277,7 +1323,7 @@ public: static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; static ClassLoaderData* loader_data(oop loader); static ClassLoaderData* cmpxchg_loader_data(ClassLoaderData* new_data, oop loader, ClassLoaderData* expected_data); @@ -1330,7 +1376,7 @@ static bool has_security_manager(); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Debugging friend class JavaClasses; @@ -1368,7 +1414,7 @@ int version, int bci, Symbol* name, TRAPS); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Debugging friend class JavaClasses; @@ -1412,7 +1458,7 @@ static void set_version(oop info, short value); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; static void to_stack_trace_element(Handle stackFrame, Handle stack_trace_element, TRAPS); @@ -1434,7 +1480,7 @@ static void set_mode(oop info, int value); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Debugging friend class JavaClasses; @@ -1459,7 +1505,7 @@ static void set_deflt(oop obj, bool val); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; // Debugging friend class JavaClasses; @@ -1473,7 +1519,7 @@ public: static int limit_offset(); static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; class java_util_concurrent_locks_AbstractOwnableSynchronizer : AllStatic { @@ -1482,7 +1528,7 @@ public: static void compute_offsets(); static oop get_owner_threadObj(oop obj); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; class java_lang_Integer_IntegerCache: AllStatic { @@ -1491,7 +1537,7 @@ public: static int archivedCache_offset() { return _archivedCache_offset; } static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; class jdk_internal_module_ArchivedModuleGraph: AllStatic { @@ -1506,7 +1552,7 @@ static int archivedMainModule_offset() { return _archivedMainModule_offset; } static int archivedConfiguration_offset() { return _archivedConfiguration_offset; } static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; class java_lang_module_Configuration: AllStatic { @@ -1515,7 +1561,7 @@ public: static int EMPTY_CONFIGURATION_offset() { return _EMPTY_CONFIGURATION_offset; } static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; class java_util_ImmutableCollections_ListN : AllStatic { @@ -1524,7 +1570,7 @@ public: static int EMPTY_LIST_offset() { return _EMPTY_LIST_offset; } static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; class java_util_ImmutableCollections_SetN : AllStatic { @@ -1533,7 +1579,7 @@ public: static int EMPTY_SET_offset() { return _EMPTY_SET_offset; } static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; class java_util_ImmutableCollections_MapN : AllStatic { @@ -1542,7 +1588,7 @@ public: static int EMPTY_MAP_offset() { return _EMPTY_MAP_offset; } static void compute_offsets(); - static void serialize(SerializeClosure* f) NOT_CDS_RETURN; + static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; }; // Use to declare fields that need to be injected into Java classes @@ -1605,7 +1651,7 @@ static void compute_hard_coded_offsets(); static void compute_offsets(); static void check_offsets() PRODUCT_RETURN; - + static void serialize_offsets(SerializeClosure* soc) NOT_CDS_RETURN; static InjectedField* get_injected(Symbol* class_name, int* field_count); }; --- old/src/hotspot/share/memory/metaspaceShared.cpp 2018-08-14 21:28:18.108874466 -0700 +++ new/src/hotspot/share/memory/metaspaceShared.cpp 2018-08-14 21:28:17.792862345 -0700 @@ -423,51 +423,12 @@ StringTable::serialize(soc); soc->do_tag(--tag); - serialize_well_known_classes(soc); + JavaClasses::serialize_offsets(soc); soc->do_tag(--tag); soc->do_tag(666); } -void MetaspaceShared::serialize_well_known_classes(SerializeClosure* soc) { - java_lang_Class::serialize(soc); - java_lang_String::serialize(soc); - java_lang_System::serialize(soc); - java_lang_ClassLoader::serialize(soc); - java_lang_Throwable::serialize(soc); - java_lang_Thread::serialize(soc); - java_lang_ThreadGroup::serialize(soc); - java_lang_AssertionStatusDirectives::serialize(soc); - java_lang_module_Configuration::serialize(soc); - java_lang_ref_SoftReference::serialize(soc); - java_lang_invoke_MethodHandle::serialize(soc); - java_lang_invoke_DirectMethodHandle::serialize(soc); - java_lang_invoke_MemberName::serialize(soc); - java_lang_invoke_ResolvedMethodName::serialize(soc); - java_lang_invoke_LambdaForm::serialize(soc); - java_lang_invoke_MethodType::serialize(soc); - java_lang_invoke_CallSite::serialize(soc); - java_lang_invoke_MethodHandleNatives_CallSiteContext::serialize(soc); - java_security_AccessControlContext::serialize(soc); - java_lang_reflect_AccessibleObject::serialize(soc); - java_lang_reflect_Method::serialize(soc); - java_lang_reflect_Constructor::serialize(soc); - java_lang_reflect_Field::serialize(soc); - java_nio_Buffer::serialize(soc); - reflect_ConstantPool::serialize(soc); - reflect_UnsafeStaticFieldAccessorImpl::serialize(soc); - java_lang_reflect_Parameter::serialize(soc); - java_lang_Module::serialize(soc); - java_lang_StackTraceElement::serialize(soc); - java_lang_StackFrameInfo::serialize(soc); - java_lang_LiveStackFrameInfo::serialize(soc); - java_util_concurrent_locks_AbstractOwnableSynchronizer::serialize(soc); - java_util_ImmutableCollections_ListN::serialize(soc); - java_util_ImmutableCollections_MapN::serialize(soc); - java_util_ImmutableCollections_SetN::serialize(soc); - jdk_internal_module_ArchivedModuleGraph::serialize(soc); -} - address MetaspaceShared::cds_i2i_entry_code_buffers(size_t total_size) { if (DumpSharedSpaces) { if (_cds_i2i_entry_code_buffers == NULL) { --- old/src/hotspot/share/memory/metaspaceShared.hpp 2018-08-14 21:28:19.144914206 -0700 +++ new/src/hotspot/share/memory/metaspaceShared.hpp 2018-08-14 21:28:18.820901778 -0700 @@ -204,7 +204,6 @@ static void patch_cpp_vtable_pointers(); static bool is_valid_shared_method(const Method* m) NOT_CDS_RETURN_(false); static void serialize(SerializeClosure* sc) NOT_CDS_RETURN; - static void serialize_well_known_classes(SerializeClosure* soc) NOT_CDS_RETURN; static MetaspaceSharedStats* stats() { return &_stats;