Mercurial > hg > graal-jvmci-8
comparison src/share/vm/prims/methodHandles.cpp @ 12823:ac9cb1d5a202
8009130: Lambda: Fix access controls, loader constraints.
Summary: New default methods list with inherited superinterface methods
Reviewed-by: minqi, sspitsyn, coleenp
author | acorn |
---|---|
date | Mon, 07 Oct 2013 12:20:28 -0400 |
parents | b2e698d2276c |
children | d95eca175eff |
comparison
equal
deleted
inserted
replaced
12822:cc4f5f8d885e | 12823:ac9cb1d5a202 |
---|---|
185 vmindex = info.itable_index(); | 185 vmindex = info.itable_index(); |
186 // More importantly, the itable index only works with the method holder. | 186 // More importantly, the itable index only works with the method holder. |
187 receiver_limit = m->method_holder(); | 187 receiver_limit = m->method_holder(); |
188 assert(receiver_limit->verify_itable_index(vmindex), ""); | 188 assert(receiver_limit->verify_itable_index(vmindex), ""); |
189 flags |= IS_METHOD | (JVM_REF_invokeInterface << REFERENCE_KIND_SHIFT); | 189 flags |= IS_METHOD | (JVM_REF_invokeInterface << REFERENCE_KIND_SHIFT); |
190 if (TraceInvokeDynamic) { | |
191 ResourceMark rm; | |
192 tty->print_cr("memberName: invokeinterface method_holder::method: %s, receiver: %s, itableindex: %d, access_flags:", | |
193 Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()), | |
194 receiver_limit()->internal_name(), vmindex); | |
195 m->access_flags().print_on(tty); | |
196 if (!m->is_abstract()) { | |
197 tty->print("default"); | |
198 } | |
199 tty->cr(); | |
200 } | |
190 break; | 201 break; |
191 | 202 |
192 case CallInfo::vtable_call: | 203 case CallInfo::vtable_call: |
193 vmindex = info.vtable_index(); | 204 vmindex = info.vtable_index(); |
194 flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT); | 205 flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT); |
195 assert(receiver_limit->is_subtype_of(m->method_holder()), "virtual call must be type-safe"); | 206 assert(receiver_limit->is_subtype_of(m->method_holder()), "virtual call must be type-safe"); |
207 if (TraceInvokeDynamic) { | |
208 ResourceMark rm; | |
209 tty->print_cr("memberName: invokevirtual method_holder::method: %s, receiver: %s, vtableindex: %d, access_flags:", | |
210 Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()), | |
211 receiver_limit()->internal_name(), vmindex); | |
212 m->access_flags().print_on(tty); | |
213 if (m->is_default_method()) { | |
214 tty->print("default"); | |
215 } | |
216 tty->cr(); | |
217 } | |
196 break; | 218 break; |
197 | 219 |
198 case CallInfo::direct_call: | 220 case CallInfo::direct_call: |
199 vmindex = Method::nonvirtual_vtable_index; | 221 vmindex = Method::nonvirtual_vtable_index; |
200 if (m->is_static()) { | 222 if (m->is_static()) { |