mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8149644: Integrate VarHandles
Reviewed-by: kvn, vlivanov
This commit is contained in:
parent
ce350e07fa
commit
ab69113c5e
10 changed files with 86 additions and 24 deletions
|
@ -1351,11 +1351,16 @@ void Method::init_intrinsic_id() {
|
|||
// ditto for method and signature:
|
||||
vmSymbols::SID name_id = vmSymbols::find_sid(name());
|
||||
if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
|
||||
&& name_id == vmSymbols::NO_SID)
|
||||
&& klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_VarHandle)
|
||||
&& name_id == vmSymbols::NO_SID) {
|
||||
return;
|
||||
}
|
||||
vmSymbols::SID sig_id = vmSymbols::find_sid(signature());
|
||||
if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
|
||||
&& sig_id == vmSymbols::NO_SID) return;
|
||||
&& klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_VarHandle)
|
||||
&& sig_id == vmSymbols::NO_SID) {
|
||||
return;
|
||||
}
|
||||
jshort flags = access_flags().as_short();
|
||||
|
||||
vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
|
||||
|
@ -1383,8 +1388,9 @@ void Method::init_intrinsic_id() {
|
|||
}
|
||||
break;
|
||||
|
||||
// Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*.
|
||||
// Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*., VarHandle
|
||||
case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle):
|
||||
case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_VarHandle):
|
||||
if (!is_native()) break;
|
||||
id = MethodHandles::signature_polymorphic_name_id(method_holder(), name());
|
||||
if (is_static() != MethodHandles::is_signature_polymorphic_static(id))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue