comparison src/share/vm/interpreter/linkResolver.cpp @ 14442:1174c8abbdb6

Merge
author kvn
date Thu, 05 Dec 2013 15:13:12 -0800
parents 22eaa15b7960
children 7a58803b5069
comparison
equal deleted inserted replaced
14441:e7cbc95179c4 14442:1174c8abbdb6
913 resolved_method->signature()->as_C_string() 913 resolved_method->signature()->as_C_string()
914 ); 914 );
915 return; 915 return;
916 } 916 }
917 917
918 // check if invokespecial's interface method reference is in an indirect superinterface
919 if (!current_klass.is_null() && resolved_klass->is_interface()) {
920 Klass *klass_to_check = !InstanceKlass::cast(current_klass())->is_anonymous() ?
921 current_klass() :
922 InstanceKlass::cast(current_klass())->host_klass();
923
924 if (!InstanceKlass::cast(klass_to_check)->is_same_or_direct_interface(resolved_klass())) {
925 ResourceMark rm(THREAD);
926 char buf[200];
927 jio_snprintf(buf, sizeof(buf),
928 "Interface method reference: %s, is in an indirect superinterface of %s",
929 Method::name_and_sig_as_C_string(resolved_klass(),
930 resolved_method->name(),
931 resolved_method->signature()),
932 current_klass->external_name());
933 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
934 }
935 }
936
918 // check if not static 937 // check if not static
919 if (resolved_method->is_static()) { 938 if (resolved_method->is_static()) {
920 ResourceMark rm(THREAD); 939 ResourceMark rm(THREAD);
921 char buf[200]; 940 char buf[200];
922 jio_snprintf(buf, sizeof(buf), 941 jio_snprintf(buf, sizeof(buf),