1849 #define THROWABLE_FIELDS_DO(macro) \
1850 macro(backtrace_offset, k, "backtrace", object_signature, false); \
1851 macro(detailMessage_offset, k, "detailMessage", string_signature, false); \
1852 macro(stackTrace_offset, k, "stackTrace", java_lang_StackTraceElement_array, false); \
1853 macro(depth_offset, k, "depth", int_signature, false); \
1854 macro(static_unassigned_stacktrace_offset, k, "UNASSIGNED_STACK", java_lang_StackTraceElement_array, true)
1855
1856 void java_lang_Throwable::compute_offsets() {
1857 InstanceKlass* k = SystemDictionary::Throwable_klass();
1858 THROWABLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
1859 }
1860
1861 #if INCLUDE_CDS
1862 void java_lang_Throwable::serialize(SerializeClosure* f) {
1863 THROWABLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
1864 }
1865 #endif
1866
1867 oop java_lang_Throwable::unassigned_stacktrace() {
1868 InstanceKlass* ik = SystemDictionary::Throwable_klass();
1869 address addr = ik->static_field_addr(static_unassigned_stacktrace_offset);
1870 if (UseCompressedOops) {
1871 return oopDesc::load_decode_heap_oop((narrowOop *)addr);
1872 } else {
1873 return oopDesc::load_decode_heap_oop((oop*)addr);
1874 }
1875 }
1876
1877 oop java_lang_Throwable::backtrace(oop throwable) {
1878 return throwable->obj_field_acquire(backtrace_offset);
1879 }
1880
1881
1882 void java_lang_Throwable::set_backtrace(oop throwable, oop value) {
1883 throwable->release_obj_field_put(backtrace_offset, value);
1884 }
1885
1886 int java_lang_Throwable::depth(oop throwable) {
1887 return throwable->int_field(depth_offset);
1888 }
1889
1890 void java_lang_Throwable::set_depth(oop throwable, int value) {
1891 throwable->int_field_put(depth_offset, value);
1892 }
1893
1894 oop java_lang_Throwable::message(oop throwable) {
3530 macro(timestamp_offset, k, "timestamp", long_signature, false); \
3531 macro(static_clock_offset, k, "clock", long_signature, true)
3532
3533 void java_lang_ref_SoftReference::compute_offsets() {
3534 InstanceKlass* k = SystemDictionary::SoftReference_klass();
3535 SOFTREFERENCE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3536 }
3537
3538 #if INCLUDE_CDS
3539 void java_lang_ref_SoftReference::serialize(SerializeClosure* f) {
3540 SOFTREFERENCE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
3541 }
3542 #endif
3543
3544 jlong java_lang_ref_SoftReference::timestamp(oop ref) {
3545 return ref->long_field(timestamp_offset);
3546 }
3547
3548 jlong java_lang_ref_SoftReference::clock() {
3549 InstanceKlass* ik = SystemDictionary::SoftReference_klass();
3550 jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
3551 return *offset;
3552 }
3553
3554 void java_lang_ref_SoftReference::set_clock(jlong value) {
3555 InstanceKlass* ik = SystemDictionary::SoftReference_klass();
3556 jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
3557 *offset = value;
3558 }
3559
3560 // Support for java_lang_invoke_DirectMethodHandle
3561
3562 int java_lang_invoke_DirectMethodHandle::_member_offset;
3563
3564 oop java_lang_invoke_DirectMethodHandle::member(oop dmh) {
3565 oop member_name = NULL;
3566 assert(oopDesc::is_oop(dmh) && java_lang_invoke_DirectMethodHandle::is_instance(dmh),
3567 "a DirectMethodHandle oop is expected");
3568 return dmh->obj_field(member_offset_in_bytes());
3569 }
3570
3571 #define DIRECTMETHODHANDLE_FIELDS_DO(macro) \
3572 macro(_member_offset, k, "member", java_lang_invoke_MemberName_signature, false)
3573
3574 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
3575 InstanceKlass* k = SystemDictionary::DirectMethodHandle_klass();
3576 DIRECTMETHODHANDLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3577 }
4116 macro(static_security_offset, k, "security", security_manager_signature, true)
4117
4118 void java_lang_System::compute_offsets() {
4119 InstanceKlass* k = SystemDictionary::System_klass();
4120 SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
4121 }
4122
4123 #if INCLUDE_CDS
4124 void java_lang_System::serialize(SerializeClosure* f) {
4125 SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
4126 }
4127 #endif
4128
4129 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
4130 int java_lang_System::out_offset_in_bytes() { return static_out_offset; }
4131 int java_lang_System::err_offset_in_bytes() { return static_err_offset; }
4132
4133
4134 bool java_lang_System::has_security_manager() {
4135 InstanceKlass* ik = SystemDictionary::System_klass();
4136 address addr = ik->static_field_addr(static_security_offset);
4137 if (UseCompressedOops) {
4138 return oopDesc::load_decode_heap_oop((narrowOop *)addr) != NULL;
4139 } else {
4140 return oopDesc::load_decode_heap_oop((oop*)addr) != NULL;
4141 }
4142 }
4143
4144 int java_lang_Class::_klass_offset;
4145 int java_lang_Class::_array_klass_offset;
4146 int java_lang_Class::_oop_size_offset;
4147 int java_lang_Class::_static_oop_field_count_offset;
4148 int java_lang_Class::_class_loader_offset;
4149 int java_lang_Class::_module_offset;
4150 int java_lang_Class::_protection_domain_offset;
4151 int java_lang_Class::_component_mirror_offset;
4152 int java_lang_Class::_init_lock_offset;
4153 int java_lang_Class::_signers_offset;
4154 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
4155 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
4156 int java_lang_Throwable::backtrace_offset;
4157 int java_lang_Throwable::detailMessage_offset;
4158 int java_lang_Throwable::stackTrace_offset;
4159 int java_lang_Throwable::depth_offset;
4160 int java_lang_Throwable::static_unassigned_stacktrace_offset;
4161 int java_lang_reflect_AccessibleObject::override_offset;
|
1849 #define THROWABLE_FIELDS_DO(macro) \
1850 macro(backtrace_offset, k, "backtrace", object_signature, false); \
1851 macro(detailMessage_offset, k, "detailMessage", string_signature, false); \
1852 macro(stackTrace_offset, k, "stackTrace", java_lang_StackTraceElement_array, false); \
1853 macro(depth_offset, k, "depth", int_signature, false); \
1854 macro(static_unassigned_stacktrace_offset, k, "UNASSIGNED_STACK", java_lang_StackTraceElement_array, true)
1855
1856 void java_lang_Throwable::compute_offsets() {
1857 InstanceKlass* k = SystemDictionary::Throwable_klass();
1858 THROWABLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
1859 }
1860
1861 #if INCLUDE_CDS
1862 void java_lang_Throwable::serialize(SerializeClosure* f) {
1863 THROWABLE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
1864 }
1865 #endif
1866
1867 oop java_lang_Throwable::unassigned_stacktrace() {
1868 InstanceKlass* ik = SystemDictionary::Throwable_klass();
1869 oop base = ik->static_field_base();
1870 return base->obj_field(static_unassigned_stacktrace_offset);
1871 }
1872
1873 oop java_lang_Throwable::backtrace(oop throwable) {
1874 return throwable->obj_field_acquire(backtrace_offset);
1875 }
1876
1877
1878 void java_lang_Throwable::set_backtrace(oop throwable, oop value) {
1879 throwable->release_obj_field_put(backtrace_offset, value);
1880 }
1881
1882 int java_lang_Throwable::depth(oop throwable) {
1883 return throwable->int_field(depth_offset);
1884 }
1885
1886 void java_lang_Throwable::set_depth(oop throwable, int value) {
1887 throwable->int_field_put(depth_offset, value);
1888 }
1889
1890 oop java_lang_Throwable::message(oop throwable) {
3526 macro(timestamp_offset, k, "timestamp", long_signature, false); \
3527 macro(static_clock_offset, k, "clock", long_signature, true)
3528
3529 void java_lang_ref_SoftReference::compute_offsets() {
3530 InstanceKlass* k = SystemDictionary::SoftReference_klass();
3531 SOFTREFERENCE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3532 }
3533
3534 #if INCLUDE_CDS
3535 void java_lang_ref_SoftReference::serialize(SerializeClosure* f) {
3536 SOFTREFERENCE_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
3537 }
3538 #endif
3539
3540 jlong java_lang_ref_SoftReference::timestamp(oop ref) {
3541 return ref->long_field(timestamp_offset);
3542 }
3543
3544 jlong java_lang_ref_SoftReference::clock() {
3545 InstanceKlass* ik = SystemDictionary::SoftReference_klass();
3546 oop base = ik->static_field_base();
3547 return base->long_field(static_clock_offset);
3548 }
3549
3550 void java_lang_ref_SoftReference::set_clock(jlong value) {
3551 InstanceKlass* ik = SystemDictionary::SoftReference_klass();
3552 oop base = ik->static_field_base();
3553 base->long_field_put(static_clock_offset, value);
3554 }
3555
3556 // Support for java_lang_invoke_DirectMethodHandle
3557
3558 int java_lang_invoke_DirectMethodHandle::_member_offset;
3559
3560 oop java_lang_invoke_DirectMethodHandle::member(oop dmh) {
3561 oop member_name = NULL;
3562 assert(oopDesc::is_oop(dmh) && java_lang_invoke_DirectMethodHandle::is_instance(dmh),
3563 "a DirectMethodHandle oop is expected");
3564 return dmh->obj_field(member_offset_in_bytes());
3565 }
3566
3567 #define DIRECTMETHODHANDLE_FIELDS_DO(macro) \
3568 macro(_member_offset, k, "member", java_lang_invoke_MemberName_signature, false)
3569
3570 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
3571 InstanceKlass* k = SystemDictionary::DirectMethodHandle_klass();
3572 DIRECTMETHODHANDLE_FIELDS_DO(FIELD_COMPUTE_OFFSET);
3573 }
4112 macro(static_security_offset, k, "security", security_manager_signature, true)
4113
4114 void java_lang_System::compute_offsets() {
4115 InstanceKlass* k = SystemDictionary::System_klass();
4116 SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
4117 }
4118
4119 #if INCLUDE_CDS
4120 void java_lang_System::serialize(SerializeClosure* f) {
4121 SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
4122 }
4123 #endif
4124
4125 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
4126 int java_lang_System::out_offset_in_bytes() { return static_out_offset; }
4127 int java_lang_System::err_offset_in_bytes() { return static_err_offset; }
4128
4129
4130 bool java_lang_System::has_security_manager() {
4131 InstanceKlass* ik = SystemDictionary::System_klass();
4132 oop base = ik->static_field_base();
4133 return !oopDesc::is_null(base->obj_field(static_security_offset));
4134 }
4135
4136 int java_lang_Class::_klass_offset;
4137 int java_lang_Class::_array_klass_offset;
4138 int java_lang_Class::_oop_size_offset;
4139 int java_lang_Class::_static_oop_field_count_offset;
4140 int java_lang_Class::_class_loader_offset;
4141 int java_lang_Class::_module_offset;
4142 int java_lang_Class::_protection_domain_offset;
4143 int java_lang_Class::_component_mirror_offset;
4144 int java_lang_Class::_init_lock_offset;
4145 int java_lang_Class::_signers_offset;
4146 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
4147 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
4148 int java_lang_Throwable::backtrace_offset;
4149 int java_lang_Throwable::detailMessage_offset;
4150 int java_lang_Throwable::stackTrace_offset;
4151 int java_lang_Throwable::depth_offset;
4152 int java_lang_Throwable::static_unassigned_stacktrace_offset;
4153 int java_lang_reflect_AccessibleObject::override_offset;
|