src/share/vm/ci/ciEnv.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8073191-work Sdiff src/share/vm/ci

src/share/vm/ci/ciEnv.cpp

Print this page




 693 ciField* ciEnv::get_field_by_index(ciInstanceKlass* accessor,
 694                                    int index) {
 695   GUARDED_VM_ENTRY(return get_field_by_index_impl(accessor, index);)
 696 }
 697 
 698 // ------------------------------------------------------------------
 699 // ciEnv::lookup_method
 700 //
 701 // Perform an appropriate method lookup based on accessor, holder,
 702 // name, signature, and bytecode.
 703 Method* ciEnv::lookup_method(InstanceKlass*  accessor,
 704                                InstanceKlass*  holder,
 705                                Symbol*       name,
 706                                Symbol*       sig,
 707                                Bytecodes::Code bc) {
 708   EXCEPTION_CONTEXT;
 709   KlassHandle h_accessor(THREAD, accessor);
 710   KlassHandle h_holder(THREAD, holder);
 711   LinkResolver::check_klass_accessability(h_accessor, h_holder, KILL_COMPILE_ON_FATAL_(NULL));
 712   methodHandle dest_method;
 713   LinkInfo link_info(h_holder, name, sig, h_accessor, /*check_access*/true);
 714   switch (bc) {
 715   case Bytecodes::_invokestatic:
 716     dest_method =
 717       LinkResolver::resolve_static_call_or_null(link_info);
 718     break;
 719   case Bytecodes::_invokespecial:
 720     dest_method =
 721       LinkResolver::resolve_special_call_or_null(link_info);
 722     break;
 723   case Bytecodes::_invokeinterface:
 724     dest_method =
 725       LinkResolver::linktime_resolve_interface_method_or_null(link_info);
 726     break;
 727   case Bytecodes::_invokevirtual:
 728     dest_method =
 729       LinkResolver::linktime_resolve_virtual_method_or_null(link_info);
 730     break;
 731   default: ShouldNotReachHere();
 732   }
 733 




 693 ciField* ciEnv::get_field_by_index(ciInstanceKlass* accessor,
 694                                    int index) {
 695   GUARDED_VM_ENTRY(return get_field_by_index_impl(accessor, index);)
 696 }
 697 
 698 // ------------------------------------------------------------------
 699 // ciEnv::lookup_method
 700 //
 701 // Perform an appropriate method lookup based on accessor, holder,
 702 // name, signature, and bytecode.
 703 Method* ciEnv::lookup_method(InstanceKlass*  accessor,
 704                                InstanceKlass*  holder,
 705                                Symbol*       name,
 706                                Symbol*       sig,
 707                                Bytecodes::Code bc) {
 708   EXCEPTION_CONTEXT;
 709   KlassHandle h_accessor(THREAD, accessor);
 710   KlassHandle h_holder(THREAD, holder);
 711   LinkResolver::check_klass_accessability(h_accessor, h_holder, KILL_COMPILE_ON_FATAL_(NULL));
 712   methodHandle dest_method;
 713   LinkInfo link_info(h_holder, name, sig, h_accessor, NULL, /*check_access*/true);
 714   switch (bc) {
 715   case Bytecodes::_invokestatic:
 716     dest_method =
 717       LinkResolver::resolve_static_call_or_null(link_info);
 718     break;
 719   case Bytecodes::_invokespecial:
 720     dest_method =
 721       LinkResolver::resolve_special_call_or_null(link_info);
 722     break;
 723   case Bytecodes::_invokeinterface:
 724     dest_method =
 725       LinkResolver::linktime_resolve_interface_method_or_null(link_info);
 726     break;
 727   case Bytecodes::_invokevirtual:
 728     dest_method =
 729       LinkResolver::linktime_resolve_virtual_method_or_null(link_info);
 730     break;
 731   default: ShouldNotReachHere();
 732   }
 733 


src/share/vm/ci/ciEnv.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File