2677 }
2678
2679
2680 // Support for java_lang_invoke_CallSite
2681
2682 int java_lang_invoke_CallSite::_target_offset;
2683
2684 void java_lang_invoke_CallSite::compute_offsets() {
2685 if (!EnableInvokeDynamic) return;
2686 klassOop k = SystemDictionary::CallSite_klass();
2687 if (k != NULL) {
2688 compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature());
2689 }
2690
2691 // Disallow compilation of CallSite.setTargetNormal and CallSite.setTargetVolatile
2692 // (For C2: keep this until we have throttling logic for uncommon traps.)
2693 if (k != NULL) {
2694 instanceKlass* ik = instanceKlass::cast(k);
2695 methodOop m_normal = ik->lookup_method(vmSymbols::setTargetNormal_name(), vmSymbols::setTarget_signature());
2696 methodOop m_volatile = ik->lookup_method(vmSymbols::setTargetVolatile_name(), vmSymbols::setTarget_signature());
2697 guarantee(m_normal && m_volatile, "must exist");
2698 m_normal->set_not_compilable_quietly();
2699 m_volatile->set_not_compilable_quietly();
2700 }
2701 }
2702
2703
2704 // Support for java_security_AccessControlContext
2705
2706 int java_security_AccessControlContext::_context_offset = 0;
2707 int java_security_AccessControlContext::_privilegedContext_offset = 0;
2708 int java_security_AccessControlContext::_isPrivileged_offset = 0;
2709
2710 void java_security_AccessControlContext::compute_offsets() {
2711 assert(_isPrivileged_offset == 0, "offsets should be initialized only once");
2712 fieldDescriptor fd;
2713 instanceKlass* ik = instanceKlass::cast(SystemDictionary::AccessControlContext_klass());
2714
2715 if (!ik->find_local_field(vmSymbols::context_name(), vmSymbols::protectiondomain_signature(), &fd)) {
2716 fatal("Invalid layout of java.security.AccessControlContext");
2717 }
|
2677 }
2678
2679
2680 // Support for java_lang_invoke_CallSite
2681
2682 int java_lang_invoke_CallSite::_target_offset;
2683
2684 void java_lang_invoke_CallSite::compute_offsets() {
2685 if (!EnableInvokeDynamic) return;
2686 klassOop k = SystemDictionary::CallSite_klass();
2687 if (k != NULL) {
2688 compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature());
2689 }
2690
2691 // Disallow compilation of CallSite.setTargetNormal and CallSite.setTargetVolatile
2692 // (For C2: keep this until we have throttling logic for uncommon traps.)
2693 if (k != NULL) {
2694 instanceKlass* ik = instanceKlass::cast(k);
2695 methodOop m_normal = ik->lookup_method(vmSymbols::setTargetNormal_name(), vmSymbols::setTarget_signature());
2696 methodOop m_volatile = ik->lookup_method(vmSymbols::setTargetVolatile_name(), vmSymbols::setTarget_signature());
2697 guarantee(m_normal != NULL && m_volatile != NULL, "must exist");
2698 m_normal->set_not_compilable_quietly();
2699 m_volatile->set_not_compilable_quietly();
2700 }
2701 }
2702
2703
2704 // Support for java_security_AccessControlContext
2705
2706 int java_security_AccessControlContext::_context_offset = 0;
2707 int java_security_AccessControlContext::_privilegedContext_offset = 0;
2708 int java_security_AccessControlContext::_isPrivileged_offset = 0;
2709
2710 void java_security_AccessControlContext::compute_offsets() {
2711 assert(_isPrivileged_offset == 0, "offsets should be initialized only once");
2712 fieldDescriptor fd;
2713 instanceKlass* ik = instanceKlass::cast(SystemDictionary::AccessControlContext_klass());
2714
2715 if (!ik->find_local_field(vmSymbols::context_name(), vmSymbols::protectiondomain_signature(), &fd)) {
2716 fatal("Invalid layout of java.security.AccessControlContext");
2717 }
|