hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 24322 c2978d1578e3
parent 23872 536c66fc43d3
child 24330 4e65b09f7101
equal deleted inserted replaced
24320:394d55c783dc 24322:c2978d1578e3
  2635   return member_name;
  2635   return member_name;
  2636 }
  2636 }
  2637 
  2637 
  2638 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
  2638 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
  2639   Klass* klass_oop = SystemDictionary::DirectMethodHandle_klass();
  2639   Klass* klass_oop = SystemDictionary::DirectMethodHandle_klass();
  2640   if (klass_oop != NULL && EnableInvokeDynamic) {
  2640   if (klass_oop != NULL) {
  2641     compute_offset(_member_offset, klass_oop, vmSymbols::member_name(), vmSymbols::java_lang_invoke_MemberName_signature());
  2641     compute_offset(_member_offset, klass_oop, vmSymbols::member_name(), vmSymbols::java_lang_invoke_MemberName_signature());
  2642   }
  2642   }
  2643 }
  2643 }
  2644 
  2644 
  2645 // Support for java_lang_invoke_MethodHandle
  2645 // Support for java_lang_invoke_MethodHandle
  2657 
  2657 
  2658 int java_lang_invoke_LambdaForm::_vmentry_offset;
  2658 int java_lang_invoke_LambdaForm::_vmentry_offset;
  2659 
  2659 
  2660 void java_lang_invoke_MethodHandle::compute_offsets() {
  2660 void java_lang_invoke_MethodHandle::compute_offsets() {
  2661   Klass* klass_oop = SystemDictionary::MethodHandle_klass();
  2661   Klass* klass_oop = SystemDictionary::MethodHandle_klass();
  2662   if (klass_oop != NULL && EnableInvokeDynamic) {
  2662   if (klass_oop != NULL) {
  2663     compute_offset(_type_offset, klass_oop, vmSymbols::type_name(), vmSymbols::java_lang_invoke_MethodType_signature());
  2663     compute_offset(_type_offset, klass_oop, vmSymbols::type_name(), vmSymbols::java_lang_invoke_MethodType_signature());
  2664     compute_optional_offset(_form_offset, klass_oop, vmSymbols::form_name(), vmSymbols::java_lang_invoke_LambdaForm_signature());
  2664     compute_offset(_form_offset, klass_oop, vmSymbols::form_name(), vmSymbols::java_lang_invoke_LambdaForm_signature());
  2665     if (_form_offset == 0) {
       
  2666       EnableInvokeDynamic = false;
       
  2667     }
       
  2668   }
  2665   }
  2669 }
  2666 }
  2670 
  2667 
  2671 void java_lang_invoke_MemberName::compute_offsets() {
  2668 void java_lang_invoke_MemberName::compute_offsets() {
  2672   Klass* klass_oop = SystemDictionary::MemberName_klass();
  2669   Klass* klass_oop = SystemDictionary::MemberName_klass();
  2673   if (klass_oop != NULL && EnableInvokeDynamic) {
  2670   if (klass_oop != NULL) {
  2674     compute_offset(_clazz_offset,     klass_oop, vmSymbols::clazz_name(),     vmSymbols::class_signature());
  2671     compute_offset(_clazz_offset,     klass_oop, vmSymbols::clazz_name(),     vmSymbols::class_signature());
  2675     compute_offset(_name_offset,      klass_oop, vmSymbols::name_name(),      vmSymbols::string_signature());
  2672     compute_offset(_name_offset,      klass_oop, vmSymbols::name_name(),      vmSymbols::string_signature());
  2676     compute_offset(_type_offset,      klass_oop, vmSymbols::type_name(),      vmSymbols::object_signature());
  2673     compute_offset(_type_offset,      klass_oop, vmSymbols::type_name(),      vmSymbols::object_signature());
  2677     compute_offset(_flags_offset,     klass_oop, vmSymbols::flags_name(),     vmSymbols::int_signature());
  2674     compute_offset(_flags_offset,     klass_oop, vmSymbols::flags_name(),     vmSymbols::int_signature());
  2678     MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  2675     MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  2679   }
  2676   }
  2680 }
  2677 }
  2681 
  2678 
  2682 void java_lang_invoke_LambdaForm::compute_offsets() {
  2679 void java_lang_invoke_LambdaForm::compute_offsets() {
  2683   Klass* klass_oop = SystemDictionary::LambdaForm_klass();
  2680   Klass* klass_oop = SystemDictionary::LambdaForm_klass();
  2684   if (klass_oop != NULL && EnableInvokeDynamic) {
  2681   if (klass_oop != NULL) {
  2685     compute_offset(_vmentry_offset, klass_oop, vmSymbols::vmentry_name(), vmSymbols::java_lang_invoke_MemberName_signature());
  2682     compute_offset(_vmentry_offset, klass_oop, vmSymbols::vmentry_name(), vmSymbols::java_lang_invoke_MemberName_signature());
  2686   }
  2683   }
  2687 }
  2684 }
  2688 
  2685 
  2689 oop java_lang_invoke_MethodHandle::type(oop mh) {
  2686 oop java_lang_invoke_MethodHandle::type(oop mh) {
  2894 // Support for java_lang_invoke_CallSite
  2891 // Support for java_lang_invoke_CallSite
  2895 
  2892 
  2896 int java_lang_invoke_CallSite::_target_offset;
  2893 int java_lang_invoke_CallSite::_target_offset;
  2897 
  2894 
  2898 void java_lang_invoke_CallSite::compute_offsets() {
  2895 void java_lang_invoke_CallSite::compute_offsets() {
  2899   if (!EnableInvokeDynamic)  return;
       
  2900   Klass* k = SystemDictionary::CallSite_klass();
  2896   Klass* k = SystemDictionary::CallSite_klass();
  2901   if (k != NULL) {
  2897   if (k != NULL) {
  2902     compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature());
  2898     compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature());
  2903   }
  2899   }
  2904 }
  2900 }
  3285 void JavaClasses::compute_offsets() {
  3281 void JavaClasses::compute_offsets() {
  3286   // java_lang_Class::compute_offsets was called earlier in bootstrap
  3282   // java_lang_Class::compute_offsets was called earlier in bootstrap
  3287   java_lang_ClassLoader::compute_offsets();
  3283   java_lang_ClassLoader::compute_offsets();
  3288   java_lang_Thread::compute_offsets();
  3284   java_lang_Thread::compute_offsets();
  3289   java_lang_ThreadGroup::compute_offsets();
  3285   java_lang_ThreadGroup::compute_offsets();
  3290   if (EnableInvokeDynamic) {
  3286   java_lang_invoke_MethodHandle::compute_offsets();
  3291     java_lang_invoke_MethodHandle::compute_offsets();
  3287   java_lang_invoke_DirectMethodHandle::compute_offsets();
  3292     java_lang_invoke_DirectMethodHandle::compute_offsets();
  3288   java_lang_invoke_MemberName::compute_offsets();
  3293     java_lang_invoke_MemberName::compute_offsets();
  3289   java_lang_invoke_LambdaForm::compute_offsets();
  3294     java_lang_invoke_LambdaForm::compute_offsets();
  3290   java_lang_invoke_MethodType::compute_offsets();
  3295     java_lang_invoke_MethodType::compute_offsets();
  3291   java_lang_invoke_CallSite::compute_offsets();
  3296     java_lang_invoke_CallSite::compute_offsets();
       
  3297   }
       
  3298   java_security_AccessControlContext::compute_offsets();
  3292   java_security_AccessControlContext::compute_offsets();
  3299   // Initialize reflection classes. The layouts of these classes
  3293   // Initialize reflection classes. The layouts of these classes
  3300   // changed with the new reflection implementation in JDK 1.4, and
  3294   // changed with the new reflection implementation in JDK 1.4, and
  3301   // since the Universe doesn't know what JDK version it is until this
  3295   // since the Universe doesn't know what JDK version it is until this
  3302   // point we defer computation of these offsets until now.
  3296   // point we defer computation of these offsets until now.