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(), |