1207 int size_of_arguments = (asc.size() + (invoke.has_receiver() ? 1 : 0)); // receiver |
1207 int size_of_arguments = (asc.size() + (invoke.has_receiver() ? 1 : 0)); // receiver |
1208 Copy::conjoint_jbytes(src_address, dest_address, |
1208 Copy::conjoint_jbytes(src_address, dest_address, |
1209 size_of_arguments * Interpreter::stackElementSize); |
1209 size_of_arguments * Interpreter::stackElementSize); |
1210 IRT_END |
1210 IRT_END |
1211 #endif |
1211 #endif |
|
1212 |
|
1213 #if INCLUDE_JVMTI |
|
1214 // This is a support of the JVMTI PopFrame interface. |
|
1215 // Make sure it is an invokestatic of a polymorphic intrinsic that has a member_name argument |
|
1216 // and return it as a vm_result so that it can be reloaded in the list of invokestatic parameters. |
|
1217 // The dmh argument is a reference to a DirectMethoHandle that has a member name field. |
|
1218 IRT_ENTRY(void, InterpreterRuntime::member_name_arg_or_null(JavaThread* thread, address dmh, |
|
1219 Method* method, address bcp)) |
|
1220 Bytecodes::Code code = Bytecodes::code_at(method, bcp); |
|
1221 if (code != Bytecodes::_invokestatic) { |
|
1222 return; |
|
1223 } |
|
1224 ConstantPool* cpool = method->constants(); |
|
1225 int cp_index = Bytes::get_native_u2(bcp + 1) + ConstantPool::CPCACHE_INDEX_TAG; |
|
1226 Symbol* cname = cpool->klass_name_at(cpool->klass_ref_index_at(cp_index)); |
|
1227 Symbol* mname = cpool->name_ref_at(cp_index); |
|
1228 |
|
1229 if (MethodHandles::has_member_arg(cname, mname)) { |
|
1230 oop member_name = java_lang_invoke_DirectMethodHandle::member((oop)dmh); |
|
1231 thread->set_vm_result(member_name); |
|
1232 } |
|
1233 IRT_END |
|
1234 #endif // INCLUDE_JVMTI |