src/share/vm/prims/methodHandles.cpp

changeset 4866
16885e702c88
parent 4354
5c0931d15474
child 4960
41ed397cc0cd
equal deleted inserted replaced
4865:818a1ac7da7a 4866:16885e702c88
103 103
104 // MemberName support 104 // MemberName support
105 105
106 // import java_lang_invoke_MemberName.* 106 // import java_lang_invoke_MemberName.*
107 enum { 107 enum {
108 IS_METHOD = java_lang_invoke_MemberName::MN_IS_METHOD, 108 IS_METHOD = java_lang_invoke_MemberName::MN_IS_METHOD,
109 IS_CONSTRUCTOR = java_lang_invoke_MemberName::MN_IS_CONSTRUCTOR, 109 IS_CONSTRUCTOR = java_lang_invoke_MemberName::MN_IS_CONSTRUCTOR,
110 IS_FIELD = java_lang_invoke_MemberName::MN_IS_FIELD, 110 IS_FIELD = java_lang_invoke_MemberName::MN_IS_FIELD,
111 IS_TYPE = java_lang_invoke_MemberName::MN_IS_TYPE, 111 IS_TYPE = java_lang_invoke_MemberName::MN_IS_TYPE,
112 CALLER_SENSITIVE = java_lang_invoke_MemberName::MN_CALLER_SENSITIVE,
112 REFERENCE_KIND_SHIFT = java_lang_invoke_MemberName::MN_REFERENCE_KIND_SHIFT, 113 REFERENCE_KIND_SHIFT = java_lang_invoke_MemberName::MN_REFERENCE_KIND_SHIFT,
113 REFERENCE_KIND_MASK = java_lang_invoke_MemberName::MN_REFERENCE_KIND_MASK, 114 REFERENCE_KIND_MASK = java_lang_invoke_MemberName::MN_REFERENCE_KIND_MASK,
114 SEARCH_SUPERCLASSES = java_lang_invoke_MemberName::MN_SEARCH_SUPERCLASSES, 115 SEARCH_SUPERCLASSES = java_lang_invoke_MemberName::MN_SEARCH_SUPERCLASSES,
115 SEARCH_INTERFACES = java_lang_invoke_MemberName::MN_SEARCH_INTERFACES, 116 SEARCH_INTERFACES = java_lang_invoke_MemberName::MN_SEARCH_INTERFACES,
116 ALL_KINDS = IS_METHOD | IS_CONSTRUCTOR | IS_FIELD | IS_TYPE 117 ALL_KINDS = IS_METHOD | IS_CONSTRUCTOR | IS_FIELD | IS_TYPE
117 }; 118 };
118 119
119 Handle MethodHandles::new_MemberName(TRAPS) { 120 Handle MethodHandles::new_MemberName(TRAPS) {
120 Handle empty; 121 Handle empty;
205 } else { 206 } else {
206 flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT); 207 flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT);
207 vmindex = m->vtable_index(); 208 vmindex = m->vtable_index();
208 } 209 }
209 210
210 java_lang_invoke_MemberName::set_flags(mname_oop, flags); 211 // @CallerSensitive annotation detected
212 if (m->caller_sensitive()) {
213 flags |= CALLER_SENSITIVE;
214 }
215
216 java_lang_invoke_MemberName::set_flags( mname_oop, flags);
211 java_lang_invoke_MemberName::set_vmtarget(mname_oop, m); 217 java_lang_invoke_MemberName::set_vmtarget(mname_oop, m);
212 java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex); // vtable/itable index 218 java_lang_invoke_MemberName::set_vmindex( mname_oop, vmindex); // vtable/itable index
213 java_lang_invoke_MemberName::set_clazz(mname_oop, receiver_limit->java_mirror()); 219 java_lang_invoke_MemberName::set_clazz( mname_oop, receiver_limit->java_mirror());
214 // Note: name and type can be lazily computed by resolve_MemberName, 220 // Note: name and type can be lazily computed by resolve_MemberName,
215 // if Java code needs them as resolved String and MethodType objects. 221 // if Java code needs them as resolved String and MethodType objects.
216 // The clazz must be eagerly stored, because it provides a GC 222 // The clazz must be eagerly stored, because it provides a GC
217 // root to help keep alive the Method*. 223 // root to help keep alive the Method*.
218 // If relevant, the vtable or itable value is stored as vmindex. 224 // If relevant, the vtable or itable value is stored as vmindex.
938 template(MethodHandles,GC_COUNT_GWT) \ 944 template(MethodHandles,GC_COUNT_GWT) \
939 template(java_lang_invoke_MemberName,MN_IS_METHOD) \ 945 template(java_lang_invoke_MemberName,MN_IS_METHOD) \
940 template(java_lang_invoke_MemberName,MN_IS_CONSTRUCTOR) \ 946 template(java_lang_invoke_MemberName,MN_IS_CONSTRUCTOR) \
941 template(java_lang_invoke_MemberName,MN_IS_FIELD) \ 947 template(java_lang_invoke_MemberName,MN_IS_FIELD) \
942 template(java_lang_invoke_MemberName,MN_IS_TYPE) \ 948 template(java_lang_invoke_MemberName,MN_IS_TYPE) \
949 template(java_lang_invoke_MemberName,MN_CALLER_SENSITIVE) \
943 template(java_lang_invoke_MemberName,MN_SEARCH_SUPERCLASSES) \ 950 template(java_lang_invoke_MemberName,MN_SEARCH_SUPERCLASSES) \
944 template(java_lang_invoke_MemberName,MN_SEARCH_INTERFACES) \ 951 template(java_lang_invoke_MemberName,MN_SEARCH_INTERFACES) \
945 template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_SHIFT) \ 952 template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_SHIFT) \
946 template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_MASK) \ 953 template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_MASK) \
947 template(MethodHandles,GC_LAMBDA_SUPPORT) \ 954 template(MethodHandles,GC_LAMBDA_SUPPORT) \

mercurial