equal
deleted
inserted
replaced
850 } |
850 } |
851 |
851 |
852 bool methodOopDesc::is_method_handle_invoke_name(vmSymbols::SID name_sid) { |
852 bool methodOopDesc::is_method_handle_invoke_name(vmSymbols::SID name_sid) { |
853 switch (name_sid) { |
853 switch (name_sid) { |
854 case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeExact_name): |
854 case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeExact_name): |
855 case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeGeneric_name): |
855 case vmSymbols::VM_SYMBOL_ENUM_NAME(invoke_name): |
856 return true; |
856 return true; |
857 } |
857 } |
858 if ((AllowTransitionalJSR292 || AllowInvokeForInvokeGeneric) |
858 if (AllowInvokeGeneric |
859 && name_sid == vmSymbols::VM_SYMBOL_ENUM_NAME(invoke_name)) |
859 && name_sid == vmSymbols::VM_SYMBOL_ENUM_NAME(invokeGeneric_name)) |
860 return true; |
860 return true; |
861 return false; |
861 return false; |
862 } |
862 } |
863 |
863 |
864 // Constant pool structure for invoke methods: |
864 // Constant pool structure for invoke methods: |
1090 // ditto for method and signature: |
1090 // ditto for method and signature: |
1091 vmSymbols::SID name_id = vmSymbols::find_sid(name()); |
1091 vmSymbols::SID name_id = vmSymbols::find_sid(name()); |
1092 if (name_id == vmSymbols::NO_SID) return; |
1092 if (name_id == vmSymbols::NO_SID) return; |
1093 vmSymbols::SID sig_id = vmSymbols::find_sid(signature()); |
1093 vmSymbols::SID sig_id = vmSymbols::find_sid(signature()); |
1094 if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle) |
1094 if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle) |
1095 && !(klass_id == vmSymbols::VM_SYMBOL_ENUM_NAME(java_dyn_MethodHandle) && AllowTransitionalJSR292) |
|
1096 && sig_id == vmSymbols::NO_SID) return; |
1095 && sig_id == vmSymbols::NO_SID) return; |
1097 jshort flags = access_flags().as_short(); |
1096 jshort flags = access_flags().as_short(); |
1098 |
1097 |
1099 vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags); |
1098 vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags); |
1100 if (id != vmIntrinsics::_none) { |
1099 if (id != vmIntrinsics::_none) { |
1116 break; |
1115 break; |
1117 } |
1116 } |
1118 break; |
1117 break; |
1119 |
1118 |
1120 // Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*. |
1119 // Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*. |
1121 case vmSymbols::VM_SYMBOL_ENUM_NAME(java_dyn_MethodHandle): // AllowTransitionalJSR292 ONLY |
|
1122 case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle): |
1120 case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle): |
1123 if (is_static() || !is_native()) break; |
1121 if (is_static() || !is_native()) break; |
1124 switch (name_id) { |
1122 switch (name_id) { |
1125 case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeGeneric_name): |
1123 case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeGeneric_name): |
|
1124 if (!AllowInvokeGeneric) break; |
|
1125 case vmSymbols::VM_SYMBOL_ENUM_NAME(invoke_name): |
1126 id = vmIntrinsics::_invokeGeneric; |
1126 id = vmIntrinsics::_invokeGeneric; |
1127 break; |
1127 break; |
1128 case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeExact_name): |
1128 case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeExact_name): |
1129 id = vmIntrinsics::_invokeExact; |
1129 id = vmIntrinsics::_invokeExact; |
1130 break; |
|
1131 case vmSymbols::VM_SYMBOL_ENUM_NAME(invoke_name): |
|
1132 if (AllowInvokeForInvokeGeneric) id = vmIntrinsics::_invokeGeneric; |
|
1133 else if (AllowTransitionalJSR292) id = vmIntrinsics::_invokeExact; |
|
1134 break; |
1130 break; |
1135 } |
1131 } |
1136 break; |
1132 break; |
1137 case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_InvokeDynamic): |
1133 case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_InvokeDynamic): |
1138 if (!is_static() || !is_native()) break; |
1134 if (!is_static() || !is_native()) break; |