src/share/vm/classfile/javaClasses.cpp

Print this page




2540 
2541 
2542 // Support for java_lang_ref_SoftReference
2543 
2544 jlong java_lang_ref_SoftReference::timestamp(oop ref) {
2545   return ref->long_field(timestamp_offset);
2546 }
2547 
2548 jlong java_lang_ref_SoftReference::clock() {
2549   InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass());
2550   jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
2551   return *offset;
2552 }
2553 
2554 void java_lang_ref_SoftReference::set_clock(jlong value) {
2555   InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass());
2556   jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
2557   *offset = value;
2558 }
2559 

2560 



















2561 // Support for java_lang_invoke_MethodHandle
2562 
2563 int java_lang_invoke_MethodHandle::_type_offset;
2564 int java_lang_invoke_MethodHandle::_form_offset;
2565 
2566 int java_lang_invoke_MemberName::_clazz_offset;
2567 int java_lang_invoke_MemberName::_name_offset;
2568 int java_lang_invoke_MemberName::_type_offset;
2569 int java_lang_invoke_MemberName::_flags_offset;
2570 int java_lang_invoke_MemberName::_vmtarget_offset;
2571 int java_lang_invoke_MemberName::_vmloader_offset;
2572 int java_lang_invoke_MemberName::_vmindex_offset;
2573 
2574 int java_lang_invoke_LambdaForm::_vmentry_offset;
2575 
2576 void java_lang_invoke_MethodHandle::compute_offsets() {
2577   Klass* klass_oop = SystemDictionary::MethodHandle_klass();
2578   if (klass_oop != NULL && EnableInvokeDynamic) {
2579     compute_offset(_type_offset, klass_oop, vmSymbols::type_name(), vmSymbols::java_lang_invoke_MethodType_signature());
2580     compute_optional_offset(_form_offset, klass_oop, vmSymbols::form_name(), vmSymbols::java_lang_invoke_LambdaForm_signature());


3188   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
3189   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
3190   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
3191   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
3192   java_lang_AssertionStatusDirectives::classEnabled_offset = java_lang_AssertionStatusDirectives::hc_classEnabled_offset * x + header;
3193   java_lang_AssertionStatusDirectives::packages_offset = java_lang_AssertionStatusDirectives::hc_packages_offset * x + header;
3194   java_lang_AssertionStatusDirectives::packageEnabled_offset = java_lang_AssertionStatusDirectives::hc_packageEnabled_offset * x + header;
3195   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
3196 
3197 }
3198 
3199 
3200 // Compute non-hard-coded field offsets of all the classes in this file
3201 void JavaClasses::compute_offsets() {
3202   // java_lang_Class::compute_offsets was called earlier in bootstrap
3203   java_lang_ClassLoader::compute_offsets();
3204   java_lang_Thread::compute_offsets();
3205   java_lang_ThreadGroup::compute_offsets();
3206   if (EnableInvokeDynamic) {
3207     java_lang_invoke_MethodHandle::compute_offsets();

3208     java_lang_invoke_MemberName::compute_offsets();
3209     java_lang_invoke_LambdaForm::compute_offsets();
3210     java_lang_invoke_MethodType::compute_offsets();
3211     java_lang_invoke_CallSite::compute_offsets();
3212   }
3213   java_security_AccessControlContext::compute_offsets();
3214   // Initialize reflection classes. The layouts of these classes
3215   // changed with the new reflection implementation in JDK 1.4, and
3216   // since the Universe doesn't know what JDK version it is until this
3217   // point we defer computation of these offsets until now.
3218   java_lang_reflect_AccessibleObject::compute_offsets();
3219   java_lang_reflect_Method::compute_offsets();
3220   java_lang_reflect_Constructor::compute_offsets();
3221   java_lang_reflect_Field::compute_offsets();
3222   if (JDK_Version::is_gte_jdk14x_version()) {
3223     java_nio_Buffer::compute_offsets();
3224   }
3225   if (JDK_Version::is_gte_jdk15x_version()) {
3226     sun_reflect_ConstantPool::compute_offsets();
3227     sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();




2540 
2541 
2542 // Support for java_lang_ref_SoftReference
2543 
2544 jlong java_lang_ref_SoftReference::timestamp(oop ref) {
2545   return ref->long_field(timestamp_offset);
2546 }
2547 
2548 jlong java_lang_ref_SoftReference::clock() {
2549   InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass());
2550   jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
2551   return *offset;
2552 }
2553 
2554 void java_lang_ref_SoftReference::set_clock(jlong value) {
2555   InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass());
2556   jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
2557   *offset = value;
2558 }
2559 
2560 // Support for java_lang_invoke_DirectMethodHandle
2561 
2562 int java_lang_invoke_DirectMethodHandle::_member_offset;
2563 
2564 oop java_lang_invoke_DirectMethodHandle::member(oop dmh) {
2565   oop member_name = NULL;
2566   bool is_dmh = dmh->is_oop() && java_lang_invoke_DirectMethodHandle::is_instance(dmh);
2567   assert(is_dmh, "a DirectMethodHandle oop is expected");
2568   if (is_dmh) {
2569     member_name = dmh->obj_field(member_offset_in_bytes());
2570   }
2571   return member_name;
2572 }
2573 
2574 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
2575   Klass* klass_oop = SystemDictionary::DirectMethodHandle_klass();
2576   if (klass_oop != NULL && EnableInvokeDynamic) {
2577     compute_offset(_member_offset, klass_oop, vmSymbols::member_name(), vmSymbols::java_lang_invoke_MemberName_signature());
2578   }
2579 }
2580 
2581 // Support for java_lang_invoke_MethodHandle
2582 
2583 int java_lang_invoke_MethodHandle::_type_offset;
2584 int java_lang_invoke_MethodHandle::_form_offset;
2585 
2586 int java_lang_invoke_MemberName::_clazz_offset;
2587 int java_lang_invoke_MemberName::_name_offset;
2588 int java_lang_invoke_MemberName::_type_offset;
2589 int java_lang_invoke_MemberName::_flags_offset;
2590 int java_lang_invoke_MemberName::_vmtarget_offset;
2591 int java_lang_invoke_MemberName::_vmloader_offset;
2592 int java_lang_invoke_MemberName::_vmindex_offset;
2593 
2594 int java_lang_invoke_LambdaForm::_vmentry_offset;
2595 
2596 void java_lang_invoke_MethodHandle::compute_offsets() {
2597   Klass* klass_oop = SystemDictionary::MethodHandle_klass();
2598   if (klass_oop != NULL && EnableInvokeDynamic) {
2599     compute_offset(_type_offset, klass_oop, vmSymbols::type_name(), vmSymbols::java_lang_invoke_MethodType_signature());
2600     compute_optional_offset(_form_offset, klass_oop, vmSymbols::form_name(), vmSymbols::java_lang_invoke_LambdaForm_signature());


3208   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
3209   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
3210   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
3211   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
3212   java_lang_AssertionStatusDirectives::classEnabled_offset = java_lang_AssertionStatusDirectives::hc_classEnabled_offset * x + header;
3213   java_lang_AssertionStatusDirectives::packages_offset = java_lang_AssertionStatusDirectives::hc_packages_offset * x + header;
3214   java_lang_AssertionStatusDirectives::packageEnabled_offset = java_lang_AssertionStatusDirectives::hc_packageEnabled_offset * x + header;
3215   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
3216 
3217 }
3218 
3219 
3220 // Compute non-hard-coded field offsets of all the classes in this file
3221 void JavaClasses::compute_offsets() {
3222   // java_lang_Class::compute_offsets was called earlier in bootstrap
3223   java_lang_ClassLoader::compute_offsets();
3224   java_lang_Thread::compute_offsets();
3225   java_lang_ThreadGroup::compute_offsets();
3226   if (EnableInvokeDynamic) {
3227     java_lang_invoke_MethodHandle::compute_offsets();
3228     java_lang_invoke_DirectMethodHandle::compute_offsets();
3229     java_lang_invoke_MemberName::compute_offsets();
3230     java_lang_invoke_LambdaForm::compute_offsets();
3231     java_lang_invoke_MethodType::compute_offsets();
3232     java_lang_invoke_CallSite::compute_offsets();
3233   }
3234   java_security_AccessControlContext::compute_offsets();
3235   // Initialize reflection classes. The layouts of these classes
3236   // changed with the new reflection implementation in JDK 1.4, and
3237   // since the Universe doesn't know what JDK version it is until this
3238   // point we defer computation of these offsets until now.
3239   java_lang_reflect_AccessibleObject::compute_offsets();
3240   java_lang_reflect_Method::compute_offsets();
3241   java_lang_reflect_Constructor::compute_offsets();
3242   java_lang_reflect_Field::compute_offsets();
3243   if (JDK_Version::is_gte_jdk14x_version()) {
3244     java_nio_Buffer::compute_offsets();
3245   }
3246   if (JDK_Version::is_gte_jdk15x_version()) {
3247     sun_reflect_ConstantPool::compute_offsets();
3248     sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();