hotspot/src/share/vm/ci/ciMethod.cpp
changeset 46630 75aa3e39d02c
parent 46542 73dd19b96b5d
child 46727 6e4a84748e2c
equal deleted inserted replaced
46629:8eeacdc76bf2 46630:75aa3e39d02c
   798    methodHandle m;
   798    methodHandle m;
   799    // Only do exact lookup if receiver klass has been linked.  Otherwise,
   799    // Only do exact lookup if receiver klass has been linked.  Otherwise,
   800    // the vtable has not been setup, and the LinkResolver will fail.
   800    // the vtable has not been setup, and the LinkResolver will fail.
   801    if (recv->is_array_klass()
   801    if (recv->is_array_klass()
   802         ||
   802         ||
   803        InstanceKlass::cast(recv)->is_linked() && !exact_receiver->is_interface()) {
   803        (InstanceKlass::cast(recv)->is_linked() && !exact_receiver->is_interface())) {
   804      if (holder()->is_interface()) {
   804      if (holder()->is_interface()) {
   805        m = LinkResolver::resolve_interface_call_or_null(recv, link_info);
   805        m = LinkResolver::resolve_interface_call_or_null(recv, link_info);
   806      } else {
   806      } else {
   807        m = LinkResolver::resolve_virtual_call_or_null(recv, link_info);
   807        m = LinkResolver::resolve_virtual_call_or_null(recv, link_info);
   808      }
   808      }
  1491         }
  1491         }
  1492         rbase = 1; // skip receiver
  1492         rbase = 1; // skip receiver
  1493       }
  1493       }
  1494       break;
  1494       break;
  1495     }
  1495     }
       
  1496     default:
       
  1497       break;
  1496   }
  1498   }
  1497   assert(target_sig->count() - rbase == linker_sig->count() - sbase - has_appendix, "argument count mismatch");
  1499   assert(target_sig->count() - rbase == linker_sig->count() - sbase - has_appendix, "argument count mismatch");
  1498   int arg_count = target_sig->count() - rbase;
  1500   int arg_count = target_sig->count() - rbase;
  1499   for (int i = 0; i < arg_count; i++) {
  1501   for (int i = 0; i < arg_count; i++) {
  1500     if (!basic_types_match(linker_sig->type_at(sbase + i), target_sig->type_at(rbase + i))) {
  1502     if (!basic_types_match(linker_sig->type_at(sbase + i), target_sig->type_at(rbase + i))) {