src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7085860 Sdiff src/share/vm/classfile

src/share/vm/classfile/javaClasses.cpp

Print this page




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   }


src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File