hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
changeset 19266 bb0324cbe0aa
parent 17087 f0b76c4c93a0
child 20017 81eba62e9048
child 22836 e7e511228518
equal deleted inserted replaced
19152:44fdfecd8f6c 19266:bb0324cbe0aa
  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