equal
deleted
inserted
replaced
922 } else { |
922 } else { |
923 assert(info.call_kind() == CallInfo::direct_call || |
923 assert(info.call_kind() == CallInfo::direct_call || |
924 info.call_kind() == CallInfo::vtable_call, ""); |
924 info.call_kind() == CallInfo::vtable_call, ""); |
925 } |
925 } |
926 #endif |
926 #endif |
927 // Get sender or sender's host_klass, and only set cpCache entry to resolved if |
927 // Get sender or sender's unsafe_anonymous_host, and only set cpCache entry to resolved if |
928 // it is not an interface. The receiver for invokespecial calls within interface |
928 // it is not an interface. The receiver for invokespecial calls within interface |
929 // methods must be checked for every call. |
929 // methods must be checked for every call. |
930 InstanceKlass* sender = pool->pool_holder(); |
930 InstanceKlass* sender = pool->pool_holder(); |
931 sender = sender->has_host_klass() ? sender->host_klass() : sender; |
931 sender = sender->is_unsafe_anonymous() ? sender->unsafe_anonymous_host() : sender; |
932 |
932 |
933 switch (info.call_kind()) { |
933 switch (info.call_kind()) { |
934 case CallInfo::direct_call: |
934 case CallInfo::direct_call: |
935 cp_cache_entry->set_direct_call( |
935 cp_cache_entry->set_direct_call( |
936 bytecode, |
936 bytecode, |