hotspot/src/share/vm/interpreter/linkResolver.cpp
changeset 17024 49cbeca23983
parent 16691 c117eee6d38a
child 20017 81eba62e9048
equal deleted inserted replaced
17022:584161d608a5 17024:49cbeca23983
  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(),