src/hotspot/share/classfile/javaClasses.cpp
changeset 51417 b08c2a94cce1
parent 51388 0dcd27526967
child 51425 4e9667589c43
equal deleted inserted replaced
51416:8c2faee50bc4 51417:b08c2a94cce1
   207 
   207 
   208   initialized = true;
   208   initialized = true;
   209 }
   209 }
   210 
   210 
   211 #if INCLUDE_CDS
   211 #if INCLUDE_CDS
   212 void java_lang_String::serialize(SerializeClosure* f) {
   212 void java_lang_String::serialize_offsets(SerializeClosure* f) {
   213   STRING_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
   213   STRING_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
   214   f->do_u4((u4*)&initialized);
   214   f->do_u4((u4*)&initialized);
   215 }
   215 }
   216 #endif
   216 #endif
   217 
   217 
  1532 
  1532 
  1533   CLASS_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  1533   CLASS_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  1534 }
  1534 }
  1535 
  1535 
  1536 #if INCLUDE_CDS
  1536 #if INCLUDE_CDS
  1537 void java_lang_Class::serialize(SerializeClosure* f) {
  1537 void java_lang_Class::serialize_offsets(SerializeClosure* f) {
  1538   f->do_u4((u4*)&offsets_computed);
  1538   f->do_u4((u4*)&offsets_computed);
  1539   f->do_u4((u4*)&_init_lock_offset);
  1539   f->do_u4((u4*)&_init_lock_offset);
  1540 
  1540 
  1541   CLASS_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1541   CLASS_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1542 
  1542 
  1606   InstanceKlass* k = SystemDictionary::Thread_klass();
  1606   InstanceKlass* k = SystemDictionary::Thread_klass();
  1607   THREAD_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  1607   THREAD_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  1608 }
  1608 }
  1609 
  1609 
  1610 #if INCLUDE_CDS
  1610 #if INCLUDE_CDS
  1611 void java_lang_Thread::serialize(SerializeClosure* f) {
  1611 void java_lang_Thread::serialize_offsets(SerializeClosure* f) {
  1612   THREAD_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1612   THREAD_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1613 }
  1613 }
  1614 #endif
  1614 #endif
  1615 
  1615 
  1616 JavaThread* java_lang_Thread::thread(oop java_thread) {
  1616 JavaThread* java_lang_Thread::thread(oop java_thread) {
  1858   InstanceKlass* k = SystemDictionary::ThreadGroup_klass();
  1858   InstanceKlass* k = SystemDictionary::ThreadGroup_klass();
  1859   THREADGROUP_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  1859   THREADGROUP_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  1860 }
  1860 }
  1861 
  1861 
  1862 #if INCLUDE_CDS
  1862 #if INCLUDE_CDS
  1863 void java_lang_ThreadGroup::serialize(SerializeClosure* f) {
  1863 void java_lang_ThreadGroup::serialize_offsets(SerializeClosure* f) {
  1864   THREADGROUP_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1864   THREADGROUP_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1865 }
  1865 }
  1866 #endif
  1866 #endif
  1867 
  1867 
  1868 #define THROWABLE_FIELDS_DO(macro) \
  1868 #define THROWABLE_FIELDS_DO(macro) \
  1876   InstanceKlass* k = SystemDictionary::Throwable_klass();
  1876   InstanceKlass* k = SystemDictionary::Throwable_klass();
  1877   THROWABLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  1877   THROWABLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  1878 }
  1878 }
  1879 
  1879 
  1880 #if INCLUDE_CDS
  1880 #if INCLUDE_CDS
  1881 void java_lang_Throwable::serialize(SerializeClosure* f) {
  1881 void java_lang_Throwable::serialize_offsets(SerializeClosure* f) {
  1882   THROWABLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1882   THROWABLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  1883 }
  1883 }
  1884 #endif
  1884 #endif
  1885 
  1885 
  1886 oop java_lang_Throwable::unassigned_stacktrace() {
  1886 oop java_lang_Throwable::unassigned_stacktrace() {
  2652   STACKFRAMEINFO_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2652   STACKFRAMEINFO_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2653   STACKFRAMEINFO_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  2653   STACKFRAMEINFO_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  2654 }
  2654 }
  2655 
  2655 
  2656 #if INCLUDE_CDS
  2656 #if INCLUDE_CDS
  2657 void java_lang_StackFrameInfo::serialize(SerializeClosure* f) {
  2657 void java_lang_StackFrameInfo::serialize_offsets(SerializeClosure* f) {
  2658   STACKFRAMEINFO_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2658   STACKFRAMEINFO_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2659   STACKFRAMEINFO_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  2659   STACKFRAMEINFO_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  2660 }
  2660 }
  2661 #endif
  2661 #endif
  2662 
  2662 
  2670   InstanceKlass* k = SystemDictionary::LiveStackFrameInfo_klass();
  2670   InstanceKlass* k = SystemDictionary::LiveStackFrameInfo_klass();
  2671   LIVESTACKFRAMEINFO_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2671   LIVESTACKFRAMEINFO_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2672 }
  2672 }
  2673 
  2673 
  2674 #if INCLUDE_CDS
  2674 #if INCLUDE_CDS
  2675 void java_lang_LiveStackFrameInfo::serialize(SerializeClosure* f) {
  2675 void java_lang_LiveStackFrameInfo::serialize_offsets(SerializeClosure* f) {
  2676   LIVESTACKFRAMEINFO_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2676   LIVESTACKFRAMEINFO_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2677 }
  2677 }
  2678 #endif
  2678 #endif
  2679 
  2679 
  2680 #define ACCESSIBLEOBJECT_FIELDS_DO(macro) \
  2680 #define ACCESSIBLEOBJECT_FIELDS_DO(macro) \
  2684   InstanceKlass* k = SystemDictionary::reflect_AccessibleObject_klass();
  2684   InstanceKlass* k = SystemDictionary::reflect_AccessibleObject_klass();
  2685   ACCESSIBLEOBJECT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2685   ACCESSIBLEOBJECT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2686 }
  2686 }
  2687 
  2687 
  2688 #if INCLUDE_CDS
  2688 #if INCLUDE_CDS
  2689 void java_lang_reflect_AccessibleObject::serialize(SerializeClosure* f) {
  2689 void java_lang_reflect_AccessibleObject::serialize_offsets(SerializeClosure* f) {
  2690   ACCESSIBLEOBJECT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2690   ACCESSIBLEOBJECT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2691 }
  2691 }
  2692 #endif
  2692 #endif
  2693 
  2693 
  2694 jboolean java_lang_reflect_AccessibleObject::override(oop reflect) {
  2694 jboolean java_lang_reflect_AccessibleObject::override(oop reflect) {
  2725   type_annotations_offset = -1;
  2725   type_annotations_offset = -1;
  2726   METHOD_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2726   METHOD_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2727 }
  2727 }
  2728 
  2728 
  2729 #if INCLUDE_CDS
  2729 #if INCLUDE_CDS
  2730 void java_lang_reflect_Method::serialize(SerializeClosure* f) {
  2730 void java_lang_reflect_Method::serialize_offsets(SerializeClosure* f) {
  2731   METHOD_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2731   METHOD_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2732 }
  2732 }
  2733 #endif
  2733 #endif
  2734 
  2734 
  2735 Handle java_lang_reflect_Method::create(TRAPS) {
  2735 Handle java_lang_reflect_Method::create(TRAPS) {
  2912   type_annotations_offset = -1;
  2912   type_annotations_offset = -1;
  2913   CONSTRUCTOR_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2913   CONSTRUCTOR_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  2914 }
  2914 }
  2915 
  2915 
  2916 #if INCLUDE_CDS
  2916 #if INCLUDE_CDS
  2917 void java_lang_reflect_Constructor::serialize(SerializeClosure* f) {
  2917 void java_lang_reflect_Constructor::serialize_offsets(SerializeClosure* f) {
  2918   CONSTRUCTOR_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2918   CONSTRUCTOR_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  2919 }
  2919 }
  2920 #endif
  2920 #endif
  2921 
  2921 
  2922 Handle java_lang_reflect_Constructor::create(TRAPS) {
  2922 Handle java_lang_reflect_Constructor::create(TRAPS) {
  3061   type_annotations_offset = -1;
  3061   type_annotations_offset = -1;
  3062   FIELD_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3062   FIELD_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3063 }
  3063 }
  3064 
  3064 
  3065 #if INCLUDE_CDS
  3065 #if INCLUDE_CDS
  3066 void java_lang_reflect_Field::serialize(SerializeClosure* f) {
  3066 void java_lang_reflect_Field::serialize_offsets(SerializeClosure* f) {
  3067   FIELD_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3067   FIELD_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3068 }
  3068 }
  3069 #endif
  3069 #endif
  3070 
  3070 
  3071 Handle java_lang_reflect_Field::create(TRAPS) {
  3071 Handle java_lang_reflect_Field::create(TRAPS) {
  3184   // The field is called ConstantPool* in the sun.reflect.ConstantPool class.
  3184   // The field is called ConstantPool* in the sun.reflect.ConstantPool class.
  3185   CONSTANTPOOL_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3185   CONSTANTPOOL_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3186 }
  3186 }
  3187 
  3187 
  3188 #if INCLUDE_CDS
  3188 #if INCLUDE_CDS
  3189 void reflect_ConstantPool::serialize(SerializeClosure* f) {
  3189 void reflect_ConstantPool::serialize_offsets(SerializeClosure* f) {
  3190   CONSTANTPOOL_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3190   CONSTANTPOOL_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3191 }
  3191 }
  3192 #endif
  3192 #endif
  3193 
  3193 
  3194 #define PARAMETER_FIELDS_DO(macro) \
  3194 #define PARAMETER_FIELDS_DO(macro) \
  3201   InstanceKlass* k = SystemDictionary::reflect_Parameter_klass();
  3201   InstanceKlass* k = SystemDictionary::reflect_Parameter_klass();
  3202   PARAMETER_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3202   PARAMETER_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3203 }
  3203 }
  3204 
  3204 
  3205 #if INCLUDE_CDS
  3205 #if INCLUDE_CDS
  3206 void java_lang_reflect_Parameter::serialize(SerializeClosure* f) {
  3206 void java_lang_reflect_Parameter::serialize_offsets(SerializeClosure* f) {
  3207   PARAMETER_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3207   PARAMETER_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3208 }
  3208 }
  3209 #endif
  3209 #endif
  3210 
  3210 
  3211 Handle java_lang_reflect_Parameter::create(TRAPS) {
  3211 Handle java_lang_reflect_Parameter::create(TRAPS) {
  3279   MODULE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3279   MODULE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3280   MODULE_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3280   MODULE_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3281 }
  3281 }
  3282 
  3282 
  3283 #if INCLUDE_CDS
  3283 #if INCLUDE_CDS
  3284 void java_lang_Module::serialize(SerializeClosure* f) {
  3284 void java_lang_Module::serialize_offsets(SerializeClosure* f) {
  3285   MODULE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3285   MODULE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3286   MODULE_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3286   MODULE_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3287 }
  3287 }
  3288 #endif
  3288 #endif
  3289 
  3289 
  3369   InstanceKlass* k = SystemDictionary::reflect_UnsafeStaticFieldAccessorImpl_klass();
  3369   InstanceKlass* k = SystemDictionary::reflect_UnsafeStaticFieldAccessorImpl_klass();
  3370   UNSAFESTATICFIELDACCESSORIMPL_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3370   UNSAFESTATICFIELDACCESSORIMPL_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3371 }
  3371 }
  3372 
  3372 
  3373 #if INCLUDE_CDS
  3373 #if INCLUDE_CDS
  3374 void reflect_UnsafeStaticFieldAccessorImpl::serialize(SerializeClosure* f) {
  3374 void reflect_UnsafeStaticFieldAccessorImpl::serialize_offsets(SerializeClosure* f) {
  3375   UNSAFESTATICFIELDACCESSORIMPL_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3375   UNSAFESTATICFIELDACCESSORIMPL_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3376 }
  3376 }
  3377 #endif
  3377 #endif
  3378 
  3378 
  3379 oop java_lang_boxing_object::initialize_and_allocate(BasicType type, TRAPS) {
  3379 oop java_lang_boxing_object::initialize_and_allocate(BasicType type, TRAPS) {
  3541   InstanceKlass* k = SystemDictionary::SoftReference_klass();
  3541   InstanceKlass* k = SystemDictionary::SoftReference_klass();
  3542   SOFTREFERENCE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3542   SOFTREFERENCE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3543 }
  3543 }
  3544 
  3544 
  3545 #if INCLUDE_CDS
  3545 #if INCLUDE_CDS
  3546 void java_lang_ref_SoftReference::serialize(SerializeClosure* f) {
  3546 void java_lang_ref_SoftReference::serialize_offsets(SerializeClosure* f) {
  3547   SOFTREFERENCE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3547   SOFTREFERENCE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3548 }
  3548 }
  3549 #endif
  3549 #endif
  3550 
  3550 
  3551 jlong java_lang_ref_SoftReference::timestamp(oop ref) {
  3551 jlong java_lang_ref_SoftReference::timestamp(oop ref) {
  3582   InstanceKlass* k = SystemDictionary::DirectMethodHandle_klass();
  3582   InstanceKlass* k = SystemDictionary::DirectMethodHandle_klass();
  3583   DIRECTMETHODHANDLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3583   DIRECTMETHODHANDLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3584 }
  3584 }
  3585 
  3585 
  3586 #if INCLUDE_CDS
  3586 #if INCLUDE_CDS
  3587 void java_lang_invoke_DirectMethodHandle::serialize(SerializeClosure* f) {
  3587 void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f) {
  3588   DIRECTMETHODHANDLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3588   DIRECTMETHODHANDLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3589 }
  3589 }
  3590 #endif
  3590 #endif
  3591 
  3591 
  3592 // Support for java_lang_invoke_MethodHandle
  3592 // Support for java_lang_invoke_MethodHandle
  3614   InstanceKlass* k = SystemDictionary::MethodHandle_klass();
  3614   InstanceKlass* k = SystemDictionary::MethodHandle_klass();
  3615   METHODHANDLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3615   METHODHANDLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3616 }
  3616 }
  3617 
  3617 
  3618 #if INCLUDE_CDS
  3618 #if INCLUDE_CDS
  3619 void java_lang_invoke_MethodHandle::serialize(SerializeClosure* f) {
  3619 void java_lang_invoke_MethodHandle::serialize_offsets(SerializeClosure* f) {
  3620   METHODHANDLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3620   METHODHANDLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3621 }
  3621 }
  3622 #endif
  3622 #endif
  3623 
  3623 
  3624 #define MEMBERNAME_FIELDS_DO(macro) \
  3624 #define MEMBERNAME_FIELDS_DO(macro) \
  3633   MEMBERNAME_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3633   MEMBERNAME_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3634   MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3634   MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3635 }
  3635 }
  3636 
  3636 
  3637 #if INCLUDE_CDS
  3637 #if INCLUDE_CDS
  3638 void java_lang_invoke_MemberName::serialize(SerializeClosure* f) {
  3638 void java_lang_invoke_MemberName::serialize_offsets(SerializeClosure* f) {
  3639   MEMBERNAME_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3639   MEMBERNAME_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3640   MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3640   MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3641 }
  3641 }
  3642 #endif
  3642 #endif
  3643 
  3643 
  3646   assert(k != NULL, "jdk mismatch");
  3646   assert(k != NULL, "jdk mismatch");
  3647   RESOLVEDMETHOD_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3647   RESOLVEDMETHOD_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3648 }
  3648 }
  3649 
  3649 
  3650 #if INCLUDE_CDS
  3650 #if INCLUDE_CDS
  3651 void java_lang_invoke_ResolvedMethodName::serialize(SerializeClosure* f) {
  3651 void java_lang_invoke_ResolvedMethodName::serialize_offsets(SerializeClosure* f) {
  3652   RESOLVEDMETHOD_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3652   RESOLVEDMETHOD_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3653 }
  3653 }
  3654 #endif
  3654 #endif
  3655 
  3655 
  3656 #define LAMBDAFORM_FIELDS_DO(macro) \
  3656 #define LAMBDAFORM_FIELDS_DO(macro) \
  3661   assert (k != NULL, "jdk mismatch");
  3661   assert (k != NULL, "jdk mismatch");
  3662   LAMBDAFORM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3662   LAMBDAFORM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3663 }
  3663 }
  3664 
  3664 
  3665 #if INCLUDE_CDS
  3665 #if INCLUDE_CDS
  3666 void java_lang_invoke_LambdaForm::serialize(SerializeClosure* f) {
  3666 void java_lang_invoke_LambdaForm::serialize_offsets(SerializeClosure* f) {
  3667   LAMBDAFORM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3667   LAMBDAFORM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3668 }
  3668 }
  3669 #endif
  3669 #endif
  3670 
  3670 
  3671 bool java_lang_invoke_LambdaForm::is_instance(oop obj) {
  3671 bool java_lang_invoke_LambdaForm::is_instance(oop obj) {
  3813   InstanceKlass* k = SystemDictionary::MethodType_klass();
  3813   InstanceKlass* k = SystemDictionary::MethodType_klass();
  3814   METHODTYPE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3814   METHODTYPE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3815 }
  3815 }
  3816 
  3816 
  3817 #if INCLUDE_CDS
  3817 #if INCLUDE_CDS
  3818 void java_lang_invoke_MethodType::serialize(SerializeClosure* f) {
  3818 void java_lang_invoke_MethodType::serialize_offsets(SerializeClosure* f) {
  3819   METHODTYPE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3819   METHODTYPE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3820 }
  3820 }
  3821 #endif
  3821 #endif
  3822 
  3822 
  3823 void java_lang_invoke_MethodType::print_signature(oop mt, outputStream* st) {
  3823 void java_lang_invoke_MethodType::print_signature(oop mt, outputStream* st) {
  3907   InstanceKlass* k = SystemDictionary::CallSite_klass();
  3907   InstanceKlass* k = SystemDictionary::CallSite_klass();
  3908   CALLSITE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3908   CALLSITE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3909 }
  3909 }
  3910 
  3910 
  3911 #if INCLUDE_CDS
  3911 #if INCLUDE_CDS
  3912 void java_lang_invoke_CallSite::serialize(SerializeClosure* f) {
  3912 void java_lang_invoke_CallSite::serialize_offsets(SerializeClosure* f) {
  3913   CALLSITE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3913   CALLSITE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3914 }
  3914 }
  3915 #endif
  3915 #endif
  3916 
  3916 
  3917 oop java_lang_invoke_CallSite::context(oop call_site) {
  3917 oop java_lang_invoke_CallSite::context(oop call_site) {
  3929   InstanceKlass* k = SystemDictionary::Context_klass();
  3929   InstanceKlass* k = SystemDictionary::Context_klass();
  3930   CALLSITECONTEXT_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3930   CALLSITECONTEXT_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3931 }
  3931 }
  3932 
  3932 
  3933 #if INCLUDE_CDS
  3933 #if INCLUDE_CDS
  3934 void java_lang_invoke_MethodHandleNatives_CallSiteContext::serialize(SerializeClosure* f) {
  3934 void java_lang_invoke_MethodHandleNatives_CallSiteContext::serialize_offsets(SerializeClosure* f) {
  3935   CALLSITECONTEXT_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3935   CALLSITECONTEXT_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  3936 }
  3936 }
  3937 #endif
  3937 #endif
  3938 
  3938 
  3939 DependencyContext java_lang_invoke_MethodHandleNatives_CallSiteContext::vmdependencies(oop call_site) {
  3939 DependencyContext java_lang_invoke_MethodHandleNatives_CallSiteContext::vmdependencies(oop call_site) {
  3961   InstanceKlass* k = SystemDictionary::AccessControlContext_klass();
  3961   InstanceKlass* k = SystemDictionary::AccessControlContext_klass();
  3962   ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3962   ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  3963 }
  3963 }
  3964 
  3964 
  3965 #if INCLUDE_CDS
  3965 #if INCLUDE_CDS
  3966 void java_security_AccessControlContext::serialize(SerializeClosure* f) {
  3966 void java_security_AccessControlContext::serialize_offsets(SerializeClosure* f) {
  3967   ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3967   ACCESSCONTROLCONTEXT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  3968 }
  3968 }
  3969 #endif
  3969 #endif
  3970 
  3970 
  3971 bool java_security_AccessControlContext::is_authorized(Handle context) {
  3971 bool java_security_AccessControlContext::is_authorized(Handle context) {
  4027 
  4027 
  4028   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  4028   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  4029 }
  4029 }
  4030 
  4030 
  4031 #if INCLUDE_CDS
  4031 #if INCLUDE_CDS
  4032 void java_lang_ClassLoader::serialize(SerializeClosure* f) {
  4032 void java_lang_ClassLoader::serialize_offsets(SerializeClosure* f) {
  4033   CLASSLOADER_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4033   CLASSLOADER_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4034   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  4034   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET);
  4035 }
  4035 }
  4036 #endif
  4036 #endif
  4037 
  4037 
  4141   InstanceKlass* k = SystemDictionary::System_klass();
  4141   InstanceKlass* k = SystemDictionary::System_klass();
  4142   SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4142   SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4143 }
  4143 }
  4144 
  4144 
  4145 #if INCLUDE_CDS
  4145 #if INCLUDE_CDS
  4146 void java_lang_System::serialize(SerializeClosure* f) {
  4146 void java_lang_System::serialize_offsets(SerializeClosure* f) {
  4147    SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4147    SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4148 }
  4148 }
  4149 #endif
  4149 #endif
  4150 
  4150 
  4151 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
  4151 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
  4272   InstanceKlass* k = SystemDictionary::StackTraceElement_klass();
  4272   InstanceKlass* k = SystemDictionary::StackTraceElement_klass();
  4273   STACKTRACEELEMENT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4273   STACKTRACEELEMENT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4274 }
  4274 }
  4275 
  4275 
  4276 #if INCLUDE_CDS
  4276 #if INCLUDE_CDS
  4277 void java_lang_StackTraceElement::serialize(SerializeClosure* f) {
  4277 void java_lang_StackTraceElement::serialize_offsets(SerializeClosure* f) {
  4278   STACKTRACEELEMENT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4278   STACKTRACEELEMENT_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4279 }
  4279 }
  4280 #endif
  4280 #endif
  4281 
  4281 
  4282 void java_lang_StackTraceElement::set_fileName(oop element, oop value) {
  4282 void java_lang_StackTraceElement::set_fileName(oop element, oop value) {
  4347   InstanceKlass* k = SystemDictionary::AssertionStatusDirectives_klass();
  4347   InstanceKlass* k = SystemDictionary::AssertionStatusDirectives_klass();
  4348   ASSERTIONSTATUSDIRECTIVES_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4348   ASSERTIONSTATUSDIRECTIVES_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4349 }
  4349 }
  4350 
  4350 
  4351 #if INCLUDE_CDS
  4351 #if INCLUDE_CDS
  4352 void java_lang_AssertionStatusDirectives::serialize(SerializeClosure* f) {
  4352 void java_lang_AssertionStatusDirectives::serialize_offsets(SerializeClosure* f) {
  4353   ASSERTIONSTATUSDIRECTIVES_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4353   ASSERTIONSTATUSDIRECTIVES_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4354 }
  4354 }
  4355 #endif
  4355 #endif
  4356 
  4356 
  4357 void java_lang_AssertionStatusDirectives::set_classes(oop o, oop val) {
  4357 void java_lang_AssertionStatusDirectives::set_classes(oop o, oop val) {
  4388   assert(k != NULL, "must be loaded in 1.4+");
  4388   assert(k != NULL, "must be loaded in 1.4+");
  4389   BUFFER_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4389   BUFFER_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4390 }
  4390 }
  4391 
  4391 
  4392 #if INCLUDE_CDS
  4392 #if INCLUDE_CDS
  4393 void java_nio_Buffer::serialize(SerializeClosure* f) {
  4393 void java_nio_Buffer::serialize_offsets(SerializeClosure* f) {
  4394   BUFFER_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4394   BUFFER_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4395 }
  4395 }
  4396 #endif
  4396 #endif
  4397 
  4397 
  4398 #define AOS_FIELDS_DO(macro) \
  4398 #define AOS_FIELDS_DO(macro) \
  4407   assert(_owner_offset != 0, "Must be initialized");
  4407   assert(_owner_offset != 0, "Must be initialized");
  4408   return obj->obj_field(_owner_offset);
  4408   return obj->obj_field(_owner_offset);
  4409 }
  4409 }
  4410 
  4410 
  4411 #if INCLUDE_CDS
  4411 #if INCLUDE_CDS
  4412 void java_util_concurrent_locks_AbstractOwnableSynchronizer::serialize(SerializeClosure* f) {
  4412 void java_util_concurrent_locks_AbstractOwnableSynchronizer::serialize_offsets(SerializeClosure* f) {
  4413   AOS_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4413   AOS_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4414 }
  4414 }
  4415 #endif
  4415 #endif
  4416 
  4416 
  4417 static int member_offset(int hardcoded_offset) {
  4417 static int member_offset(int hardcoded_offset) {
  4426   assert(k != NULL, "must be loaded");
  4426   assert(k != NULL, "must be loaded");
  4427   INTEGERCACHE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4427   INTEGERCACHE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4428 }
  4428 }
  4429 
  4429 
  4430 #if INCLUDE_CDS
  4430 #if INCLUDE_CDS
  4431 void java_lang_Integer_IntegerCache::serialize(SerializeClosure* f) {
  4431 void java_lang_Integer_IntegerCache::serialize_offsets(SerializeClosure* f) {
  4432   INTEGERCACHE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4432   INTEGERCACHE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4433 }
  4433 }
  4434 #endif
  4434 #endif
  4435 
  4435 
  4436 #define ARCHIVEDMODULEGRAPH_FIELDS_DO(macro) \
  4436 #define ARCHIVEDMODULEGRAPH_FIELDS_DO(macro) \
  4444   assert(k != NULL, "must be loaded");
  4444   assert(k != NULL, "must be loaded");
  4445   ARCHIVEDMODULEGRAPH_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4445   ARCHIVEDMODULEGRAPH_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4446 }
  4446 }
  4447 
  4447 
  4448 #if INCLUDE_CDS
  4448 #if INCLUDE_CDS
  4449 void jdk_internal_module_ArchivedModuleGraph::serialize(SerializeClosure* f) {
  4449 void jdk_internal_module_ArchivedModuleGraph::serialize_offsets(SerializeClosure* f) {
  4450   ARCHIVEDMODULEGRAPH_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4450   ARCHIVEDMODULEGRAPH_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4451 }
  4451 }
  4452 #endif
  4452 #endif
  4453 
  4453 
  4454 #define CONFIGURATION_FIELDS_DO(macro) \
  4454 #define CONFIGURATION_FIELDS_DO(macro) \
  4459   assert(k != NULL, "must be loaded");
  4459   assert(k != NULL, "must be loaded");
  4460   CONFIGURATION_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4460   CONFIGURATION_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4461 }
  4461 }
  4462 
  4462 
  4463 #if INCLUDE_CDS
  4463 #if INCLUDE_CDS
  4464 void java_lang_module_Configuration::serialize(SerializeClosure* f) {
  4464 void java_lang_module_Configuration::serialize_offsets(SerializeClosure* f) {
  4465   CONFIGURATION_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4465   CONFIGURATION_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4466 }
  4466 }
  4467 #endif
  4467 #endif
  4468 
  4468 
  4469 #define LISTN_FIELDS_DO(macro) \
  4469 #define LISTN_FIELDS_DO(macro) \
  4474   assert(k != NULL, "must be loaded");
  4474   assert(k != NULL, "must be loaded");
  4475   LISTN_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4475   LISTN_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4476 }
  4476 }
  4477 
  4477 
  4478 #if INCLUDE_CDS
  4478 #if INCLUDE_CDS
  4479 void java_util_ImmutableCollections_ListN::serialize(SerializeClosure* f) {
  4479 void java_util_ImmutableCollections_ListN::serialize_offsets(SerializeClosure* f) {
  4480   LISTN_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4480   LISTN_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4481 }
  4481 }
  4482 #endif
  4482 #endif
  4483 
  4483 
  4484 #define SETN_FIELDS_DO(macro) \
  4484 #define SETN_FIELDS_DO(macro) \
  4489   assert(k != NULL, "must be loaded");
  4489   assert(k != NULL, "must be loaded");
  4490   SETN_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4490   SETN_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4491 }
  4491 }
  4492 
  4492 
  4493 #if INCLUDE_CDS
  4493 #if INCLUDE_CDS
  4494 void java_util_ImmutableCollections_SetN::serialize(SerializeClosure* f) {
  4494 void java_util_ImmutableCollections_SetN::serialize_offsets(SerializeClosure* f) {
  4495   SETN_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4495   SETN_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4496 }
  4496 }
  4497 #endif
  4497 #endif
  4498 
  4498 
  4499 #define MAPN_FIELDS_DO(macro) \
  4499 #define MAPN_FIELDS_DO(macro) \
  4504   assert(k != NULL, "must be loaded");
  4504   assert(k != NULL, "must be loaded");
  4505   MAPN_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4505   MAPN_FIELDS_DO(FIELD_COMPUTE_OFFSET);
  4506 }
  4506 }
  4507 
  4507 
  4508 #if INCLUDE_CDS
  4508 #if INCLUDE_CDS
  4509 void java_util_ImmutableCollections_MapN::serialize(SerializeClosure* f) {
  4509 void java_util_ImmutableCollections_MapN::serialize_offsets(SerializeClosure* f) {
  4510   MAPN_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4510   MAPN_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
  4511 }
  4511 }
  4512 #endif
  4512 #endif
  4513 
  4513 
  4514 // Compute hard-coded offsets
  4514 // Compute hard-coded offsets
  4525   java_lang_ref_Reference::queue_offset       = member_offset(java_lang_ref_Reference::hc_queue_offset);
  4525   java_lang_ref_Reference::queue_offset       = member_offset(java_lang_ref_Reference::hc_queue_offset);
  4526   java_lang_ref_Reference::next_offset        = member_offset(java_lang_ref_Reference::hc_next_offset);
  4526   java_lang_ref_Reference::next_offset        = member_offset(java_lang_ref_Reference::hc_next_offset);
  4527   java_lang_ref_Reference::discovered_offset  = member_offset(java_lang_ref_Reference::hc_discovered_offset);
  4527   java_lang_ref_Reference::discovered_offset  = member_offset(java_lang_ref_Reference::hc_discovered_offset);
  4528 }
  4528 }
  4529 
  4529 
       
  4530 #define DO_COMPUTE_OFFSETS(k) k::compute_offsets();
  4530 
  4531 
  4531 // Compute non-hard-coded field offsets of all the classes in this file
  4532 // Compute non-hard-coded field offsets of all the classes in this file
  4532 void JavaClasses::compute_offsets() {
  4533 void JavaClasses::compute_offsets() {
  4533   if (UseSharedSpaces) {
  4534   if (UseSharedSpaces) {
  4534     return; // field offsets are loaded from archive
  4535     return; // field offsets are loaded from archive
  4535   }
  4536   }
  4536 
  4537 
  4537   // java_lang_Class::compute_offsets was called earlier in bootstrap
  4538   // We have already called the compute_offsets() of the
  4538   java_lang_System::compute_offsets();
  4539   // BASIC_JAVA_CLASSES_DO_PART1 classes (java_lang_String and java_lang_Class)
  4539   java_lang_ClassLoader::compute_offsets();
  4540   // earlier inside SystemDictionary::resolve_preloaded_classes()
  4540   java_lang_Throwable::compute_offsets();
  4541   BASIC_JAVA_CLASSES_DO_PART2(DO_COMPUTE_OFFSETS);
  4541   java_lang_Thread::compute_offsets();
       
  4542   java_lang_ThreadGroup::compute_offsets();
       
  4543   java_lang_AssertionStatusDirectives::compute_offsets();
       
  4544   java_lang_ref_SoftReference::compute_offsets();
       
  4545   java_lang_invoke_MethodHandle::compute_offsets();
       
  4546   java_lang_invoke_DirectMethodHandle::compute_offsets();
       
  4547   java_lang_invoke_MemberName::compute_offsets();
       
  4548   java_lang_invoke_ResolvedMethodName::compute_offsets();
       
  4549   java_lang_invoke_LambdaForm::compute_offsets();
       
  4550   java_lang_invoke_MethodType::compute_offsets();
       
  4551   java_lang_invoke_CallSite::compute_offsets();
       
  4552   java_lang_invoke_MethodHandleNatives_CallSiteContext::compute_offsets();
       
  4553   java_security_AccessControlContext::compute_offsets();
       
  4554   // Initialize reflection classes. The layouts of these classes
       
  4555   // changed with the new reflection implementation in JDK 1.4, and
       
  4556   // since the Universe doesn't know what JDK version it is until this
       
  4557   // point we defer computation of these offsets until now.
       
  4558   java_lang_reflect_AccessibleObject::compute_offsets();
       
  4559   java_lang_reflect_Method::compute_offsets();
       
  4560   java_lang_reflect_Constructor::compute_offsets();
       
  4561   java_lang_reflect_Field::compute_offsets();
       
  4562   java_nio_Buffer::compute_offsets();
       
  4563   reflect_ConstantPool::compute_offsets();
       
  4564   reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
       
  4565   java_lang_reflect_Parameter::compute_offsets();
       
  4566   java_lang_Module::compute_offsets();
       
  4567   java_lang_StackTraceElement::compute_offsets();
       
  4568   java_lang_StackFrameInfo::compute_offsets();
       
  4569   java_lang_LiveStackFrameInfo::compute_offsets();
       
  4570   java_util_concurrent_locks_AbstractOwnableSynchronizer::compute_offsets();
       
  4571 
       
  4572   java_lang_Integer_IntegerCache::compute_offsets();
       
  4573   java_lang_module_Configuration::compute_offsets();
       
  4574   java_util_ImmutableCollections_ListN::compute_offsets();
       
  4575   java_util_ImmutableCollections_MapN::compute_offsets();
       
  4576   java_util_ImmutableCollections_SetN::compute_offsets();
       
  4577   jdk_internal_module_ArchivedModuleGraph::compute_offsets();
       
  4578 
  4542 
  4579   // generated interpreter code wants to know about the offsets we just computed:
  4543   // generated interpreter code wants to know about the offsets we just computed:
  4580   AbstractAssembler::update_delayed_values();
  4544   AbstractAssembler::update_delayed_values();
  4581 }
  4545 }
       
  4546 
       
  4547 #if INCLUDE_CDS
       
  4548 #define DO_SERIALIZE_OFFSETS(k) k::serialize_offsets(soc);
       
  4549 
       
  4550 void JavaClasses::serialize_offsets(SerializeClosure* soc) {
       
  4551   BASIC_JAVA_CLASSES_DO(DO_SERIALIZE_OFFSETS);
       
  4552 }
       
  4553 #endif
       
  4554 
  4582 
  4555 
  4583 #ifndef PRODUCT
  4556 #ifndef PRODUCT
  4584 
  4557 
  4585 // These functions exist to assert the validity of hard-coded field offsets to guard
  4558 // These functions exist to assert the validity of hard-coded field offsets to guard
  4586 // against changes in the class files
  4559 // against changes in the class files