1013 void LinkResolver::resolve_invokedynamic(CallInfo& result, constantPoolHandle pool, int raw_index, TRAPS) { |
1013 void LinkResolver::resolve_invokedynamic(CallInfo& result, constantPoolHandle pool, int raw_index, TRAPS) { |
1014 assert(EnableInvokeDynamic, ""); |
1014 assert(EnableInvokeDynamic, ""); |
1015 |
1015 |
1016 // This guy is reached from InterpreterRuntime::resolve_invokedynamic. |
1016 // This guy is reached from InterpreterRuntime::resolve_invokedynamic. |
1017 |
1017 |
1018 assert(constantPoolCacheOopDesc::is_secondary_index(raw_index), "must be secondary index"); |
|
1019 int nt_index = pool->map_instruction_operand_to_index(raw_index); |
|
1020 |
|
1021 // At this point, we only need the signature, and can ignore the name. |
1018 // At this point, we only need the signature, and can ignore the name. |
1022 symbolHandle method_signature(THREAD, pool->nt_signature_ref_at(nt_index)); |
1019 symbolHandle method_signature(THREAD, pool->signature_ref_at(raw_index)); // raw_index works directly |
1023 symbolHandle method_name = vmSymbolHandles::invoke_name(); |
1020 symbolHandle method_name = vmSymbolHandles::invoke_name(); |
1024 KlassHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass(); |
1021 KlassHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass(); |
1025 |
1022 |
1026 // JSR 292: this must be an implicitly generated method MethodHandle.invoke(*...) |
1023 // JSR 292: this must be an implicitly generated method MethodHandle.invoke(*...) |
1027 // The extra MH receiver will be inserted into the stack on every call. |
1024 // The extra MH receiver will be inserted into the stack on every call. |