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. |