707 EXCEPTION_CONTEXT; |
707 EXCEPTION_CONTEXT; |
708 KlassHandle h_accessor(THREAD, accessor); |
708 KlassHandle h_accessor(THREAD, accessor); |
709 KlassHandle h_holder(THREAD, holder); |
709 KlassHandle h_holder(THREAD, holder); |
710 LinkResolver::check_klass_accessability(h_accessor, h_holder, KILL_COMPILE_ON_FATAL_(NULL)); |
710 LinkResolver::check_klass_accessability(h_accessor, h_holder, KILL_COMPILE_ON_FATAL_(NULL)); |
711 methodHandle dest_method; |
711 methodHandle dest_method; |
|
712 LinkInfo link_info(h_holder, name, sig, h_accessor, /*check_access*/true); |
712 switch (bc) { |
713 switch (bc) { |
713 case Bytecodes::_invokestatic: |
714 case Bytecodes::_invokestatic: |
714 dest_method = |
715 dest_method = |
715 LinkResolver::resolve_static_call_or_null(h_holder, name, sig, h_accessor); |
716 LinkResolver::resolve_static_call_or_null(link_info); |
716 break; |
717 break; |
717 case Bytecodes::_invokespecial: |
718 case Bytecodes::_invokespecial: |
718 dest_method = |
719 dest_method = |
719 LinkResolver::resolve_special_call_or_null(h_holder, name, sig, h_accessor); |
720 LinkResolver::resolve_special_call_or_null(link_info); |
720 break; |
721 break; |
721 case Bytecodes::_invokeinterface: |
722 case Bytecodes::_invokeinterface: |
722 dest_method = |
723 dest_method = |
723 LinkResolver::linktime_resolve_interface_method_or_null(h_holder, name, sig, |
724 LinkResolver::linktime_resolve_interface_method_or_null(link_info); |
724 h_accessor, true); |
|
725 break; |
725 break; |
726 case Bytecodes::_invokevirtual: |
726 case Bytecodes::_invokevirtual: |
727 dest_method = |
727 dest_method = |
728 LinkResolver::linktime_resolve_virtual_method_or_null(h_holder, name, sig, |
728 LinkResolver::linktime_resolve_virtual_method_or_null(link_info); |
729 h_accessor, true); |
|
730 break; |
729 break; |
731 default: ShouldNotReachHere(); |
730 default: ShouldNotReachHere(); |
732 } |
731 } |
733 |
732 |
734 return dest_method(); |
733 return dest_method(); |