src/hotspot/share/opto/doCall.cpp
changeset 51444 3e5d28e6de32
parent 50735 2f2af62dfac7
child 52634 85283f9565da
equal deleted inserted replaced
51443:cdffba164671 51444:3e5d28e6de32
   508   // Additional receiver subtype checks for interface calls via invokespecial or invokeinterface.
   508   // Additional receiver subtype checks for interface calls via invokespecial or invokeinterface.
   509   ciKlass* receiver_constraint = NULL;
   509   ciKlass* receiver_constraint = NULL;
   510   if (iter().cur_bc_raw() == Bytecodes::_invokespecial && !orig_callee->is_object_initializer()) {
   510   if (iter().cur_bc_raw() == Bytecodes::_invokespecial && !orig_callee->is_object_initializer()) {
   511     ciInstanceKlass* calling_klass = method()->holder();
   511     ciInstanceKlass* calling_klass = method()->holder();
   512     ciInstanceKlass* sender_klass =
   512     ciInstanceKlass* sender_klass =
   513         calling_klass->is_anonymous() ? calling_klass->host_klass() :
   513         calling_klass->is_unsafe_anonymous() ? calling_klass->unsafe_anonymous_host() :
   514                                         calling_klass;
   514                                                calling_klass;
   515     if (sender_klass->is_interface()) {
   515     if (sender_klass->is_interface()) {
   516       receiver_constraint = sender_klass;
   516       receiver_constraint = sender_klass;
   517     }
   517     }
   518   } else if (iter().cur_bc_raw() == Bytecodes::_invokeinterface && orig_callee->is_private()) {
   518   } else if (iter().cur_bc_raw() == Bytecodes::_invokeinterface && orig_callee->is_private()) {
   519     assert(holder->is_interface(), "How did we get a non-interface method here!");
   519     assert(holder->is_interface(), "How did we get a non-interface method here!");