2690 2691 void java_lang_invoke_CallSite::compute_offsets() { 2692 if (!EnableInvokeDynamic) return; 2693 klassOop k = SystemDictionary::CallSite_klass(); 2694 if (k != NULL) { 2695 compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature()); 2696 } 2697 2698 // Disallow compilation of CallSite.setTargetNormal and CallSite.setTargetVolatile 2699 // (For C2: keep this until we have throttling logic for uncommon traps.) 2700 if (k != NULL) { 2701 instanceKlass* ik = instanceKlass::cast(k); 2702 methodOop m_normal = ik->lookup_method(vmSymbols::setTargetNormal_name(), vmSymbols::setTarget_signature()); 2703 methodOop m_volatile = ik->lookup_method(vmSymbols::setTargetVolatile_name(), vmSymbols::setTarget_signature()); 2704 guarantee(m_normal && m_volatile, "must exist"); 2705 m_normal->set_not_compilable_quietly(); 2706 m_volatile->set_not_compilable_quietly(); 2707 } 2708 } 2709 2710 oop java_lang_invoke_CallSite::target(oop site) { 2711 return site->obj_field(_target_offset); 2712 } 2713 2714 void java_lang_invoke_CallSite::set_target(oop site, oop target) { 2715 site->obj_field_put(_target_offset, target); 2716 } 2717 2718 2719 // Support for java_security_AccessControlContext 2720 2721 int java_security_AccessControlContext::_context_offset = 0; 2722 int java_security_AccessControlContext::_privilegedContext_offset = 0; 2723 int java_security_AccessControlContext::_isPrivileged_offset = 0; 2724 2725 void java_security_AccessControlContext::compute_offsets() { 2726 assert(_isPrivileged_offset == 0, "offsets should be initialized only once"); 2727 fieldDescriptor fd; 2728 instanceKlass* ik = instanceKlass::cast(SystemDictionary::AccessControlContext_klass()); 2729 2730 if (!ik->find_local_field(vmSymbols::context_name(), vmSymbols::protectiondomain_signature(), &fd)) { 2731 fatal("Invalid layout of java.security.AccessControlContext"); 2732 } 2733 _context_offset = fd.offset(); 2734 2735 if (!ik->find_local_field(vmSymbols::privilegedContext_name(), vmSymbols::accesscontrolcontext_signature(), &fd)) { 2736 fatal("Invalid layout of java.security.AccessControlContext"); 2737 } | 2690 2691 void java_lang_invoke_CallSite::compute_offsets() { 2692 if (!EnableInvokeDynamic) return; 2693 klassOop k = SystemDictionary::CallSite_klass(); 2694 if (k != NULL) { 2695 compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature()); 2696 } 2697 2698 // Disallow compilation of CallSite.setTargetNormal and CallSite.setTargetVolatile 2699 // (For C2: keep this until we have throttling logic for uncommon traps.) 2700 if (k != NULL) { 2701 instanceKlass* ik = instanceKlass::cast(k); 2702 methodOop m_normal = ik->lookup_method(vmSymbols::setTargetNormal_name(), vmSymbols::setTarget_signature()); 2703 methodOop m_volatile = ik->lookup_method(vmSymbols::setTargetVolatile_name(), vmSymbols::setTarget_signature()); 2704 guarantee(m_normal && m_volatile, "must exist"); 2705 m_normal->set_not_compilable_quietly(); 2706 m_volatile->set_not_compilable_quietly(); 2707 } 2708 } 2709 2710 2711 // Support for java_security_AccessControlContext 2712 2713 int java_security_AccessControlContext::_context_offset = 0; 2714 int java_security_AccessControlContext::_privilegedContext_offset = 0; 2715 int java_security_AccessControlContext::_isPrivileged_offset = 0; 2716 2717 void java_security_AccessControlContext::compute_offsets() { 2718 assert(_isPrivileged_offset == 0, "offsets should be initialized only once"); 2719 fieldDescriptor fd; 2720 instanceKlass* ik = instanceKlass::cast(SystemDictionary::AccessControlContext_klass()); 2721 2722 if (!ik->find_local_field(vmSymbols::context_name(), vmSymbols::protectiondomain_signature(), &fd)) { 2723 fatal("Invalid layout of java.security.AccessControlContext"); 2724 } 2725 _context_offset = fd.offset(); 2726 2727 if (!ik->find_local_field(vmSymbols::privilegedContext_name(), vmSymbols::accesscontrolcontext_signature(), &fd)) { 2728 fatal("Invalid layout of java.security.AccessControlContext"); 2729 } |