comparison src/share/vm/interpreter/linkResolver.cpp @ 10128:41ed397cc0cd

8006267: InterfaceMethod_ref should allow invokestatic and invokespecial Summary: Lambda changes; spec 0.6.2 - Allow static invokestatic and invokespecial calls to InterfaceMethod_ref Reviewed-by: dholmes, acorn
author bharadwaj
date Thu, 18 Apr 2013 08:05:35 -0700
parents d79859ff6535
children b2e698d2276c
comparison
equal deleted inserted replaced
10126:63e31ce40bdb 10128:41ed397cc0cd
1012 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 1012 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
1013 Method::name_and_sig_as_C_string(recv_klass(), 1013 Method::name_and_sig_as_C_string(recv_klass(),
1014 resolved_method->name(), 1014 resolved_method->name(),
1015 resolved_method->signature())); 1015 resolved_method->signature()));
1016 } 1016 }
1017 // check if public 1017 // check access
1018 if (!sel_method->is_public()) { 1018 if (sel_method->method_holder()->is_interface()) {
1019 ResourceMark rm(THREAD); 1019 // Method holder is an interface. Throw Illegal Access Error if sel_method
1020 THROW_MSG(vmSymbols::java_lang_IllegalAccessError(), 1020 // is neither public nor private.
1021 Method::name_and_sig_as_C_string(recv_klass(), 1021 if (!(sel_method->is_public() || sel_method->is_private())) {
1022 sel_method->name(), 1022 ResourceMark rm(THREAD);
1023 sel_method->signature())); 1023 THROW_MSG(vmSymbols::java_lang_IllegalAccessError(),
1024 Method::name_and_sig_as_C_string(recv_klass(),
1025 sel_method->name(),
1026 sel_method->signature()));
1027 }
1028 }
1029 else {
1030 // Method holder is a class. Throw Illegal Access Error if sel_method
1031 // is not public.
1032 if (!sel_method->is_public()) {
1033 ResourceMark rm(THREAD);
1034 THROW_MSG(vmSymbols::java_lang_IllegalAccessError(),
1035 Method::name_and_sig_as_C_string(recv_klass(),
1036 sel_method->name(),
1037 sel_method->signature()));
1038 }
1024 } 1039 }
1025 // check if abstract 1040 // check if abstract
1026 if (check_null_and_abstract && sel_method->is_abstract()) { 1041 if (check_null_and_abstract && sel_method->is_abstract()) {
1027 ResourceMark rm(THREAD); 1042 ResourceMark rm(THREAD);
1028 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 1043 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),