Mercurial > hg > truffle
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), |