equal
deleted
inserted
replaced
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 } |