equal
deleted
inserted
replaced
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!"); |