hotspot/src/share/vm/runtime/sharedRuntime.cpp
changeset 36331 eeeb86fd9922
parent 35606 d873b64009cc
child 37152 29e68f1d35bb
child 36508 5f9eee6b383b
equal deleted inserted replaced
36330:37a0f096251b 36331:eeeb86fd9922
  1132     // it attaches statically resolved method to the call site.
  1132     // it attaches statically resolved method to the call site.
  1133     if (MethodHandles::is_signature_polymorphic(id) &&
  1133     if (MethodHandles::is_signature_polymorphic(id) &&
  1134         MethodHandles::is_signature_polymorphic_intrinsic(id)) {
  1134         MethodHandles::is_signature_polymorphic_intrinsic(id)) {
  1135       bc = MethodHandles::signature_polymorphic_intrinsic_bytecode(id);
  1135       bc = MethodHandles::signature_polymorphic_intrinsic_bytecode(id);
  1136 
  1136 
  1137       // Need to adjust invokehandle since inlining through signature-polymorphic
  1137       // Adjust invocation mode according to the attached method.
  1138       // method happened.
  1138       switch (bc) {
  1139       if (bc == Bytecodes::_invokehandle &&
  1139         case Bytecodes::_invokeinterface:
  1140           !MethodHandles::is_signature_polymorphic_method(attached_method())) {
  1140           if (!attached_method->method_holder()->is_interface()) {
  1141         bc = attached_method->is_static() ? Bytecodes::_invokestatic
  1141             bc = Bytecodes::_invokevirtual;
  1142                                           : Bytecodes::_invokevirtual;
  1142           }
       
  1143           break;
       
  1144         case Bytecodes::_invokehandle:
       
  1145           if (!MethodHandles::is_signature_polymorphic_method(attached_method())) {
       
  1146             bc = attached_method->is_static() ? Bytecodes::_invokestatic
       
  1147                                               : Bytecodes::_invokevirtual;
       
  1148           }
       
  1149           break;
  1143       }
  1150       }
  1144     }
  1151     }
  1145   } else {
  1152   } else {
  1146     bc = bytecode.invoke_code();
  1153     bc = bytecode.invoke_code();
  1147   }
  1154   }