< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page
rev 49250 : [mq]: JDK-8199739.patch


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;


< prev index next >