hotspot/src/cpu/x86/vm/methodHandles_x86.cpp
changeset 11487 f45d945367d4
parent 11430 718fc06da49a
child 11565 713a0398ca58
equal deleted inserted replaced
11486:cdc636532368 11487:f45d945367d4
  1003   bool has_mh = (strstr(adaptername, "return/") == NULL);  // return adapters don't have rcx_mh
  1003   bool has_mh = (strstr(adaptername, "return/") == NULL);  // return adapters don't have rcx_mh
  1004   intptr_t* last_sp = (intptr_t*) saved_bp[frame::interpreter_frame_last_sp_offset];
  1004   intptr_t* last_sp = (intptr_t*) saved_bp[frame::interpreter_frame_last_sp_offset];
  1005   intptr_t* base_sp = last_sp;
  1005   intptr_t* base_sp = last_sp;
  1006   typedef MethodHandles::RicochetFrame RicochetFrame;
  1006   typedef MethodHandles::RicochetFrame RicochetFrame;
  1007   RicochetFrame* rfp = (RicochetFrame*)((address)saved_bp - RicochetFrame::sender_link_offset_in_bytes());
  1007   RicochetFrame* rfp = (RicochetFrame*)((address)saved_bp - RicochetFrame::sender_link_offset_in_bytes());
  1008   if (!UseRicochetFrames || Universe::heap()->is_in((address) rfp->saved_args_base())) {
  1008   if (Universe::heap()->is_in((address) rfp->saved_args_base())) {
  1009     // Probably an interpreter frame.
  1009     // Probably an interpreter frame.
  1010     base_sp = (intptr_t*) saved_bp[frame::interpreter_frame_monitor_block_top_offset];
  1010     base_sp = (intptr_t*) saved_bp[frame::interpreter_frame_monitor_block_top_offset];
  1011   }
  1011   }
  1012   intptr_t    mh_reg = (intptr_t)mh;
  1012   intptr_t    mh_reg = (intptr_t)mh;
  1013   const char* mh_reg_name = "rcx_mh";
  1013   const char* mh_reg_name = "rcx_mh";
  1102          |(1<<java_lang_invoke_AdapterMethodHandle::OP_ROT_ARGS)
  1102          |(1<<java_lang_invoke_AdapterMethodHandle::OP_ROT_ARGS)
  1103          |(1<<java_lang_invoke_AdapterMethodHandle::OP_DUP_ARGS)
  1103          |(1<<java_lang_invoke_AdapterMethodHandle::OP_DUP_ARGS)
  1104          |(1<<java_lang_invoke_AdapterMethodHandle::OP_DROP_ARGS)
  1104          |(1<<java_lang_invoke_AdapterMethodHandle::OP_DROP_ARGS)
  1105           //OP_COLLECT_ARGS is below...
  1105           //OP_COLLECT_ARGS is below...
  1106          |(1<<java_lang_invoke_AdapterMethodHandle::OP_SPREAD_ARGS)
  1106          |(1<<java_lang_invoke_AdapterMethodHandle::OP_SPREAD_ARGS)
  1107          |(!UseRicochetFrames ? 0 :
  1107          |(
  1108            java_lang_invoke_MethodTypeForm::vmlayout_offset_in_bytes() <= 0 ? 0 :
  1108            java_lang_invoke_MethodTypeForm::vmlayout_offset_in_bytes() <= 0 ? 0 :
  1109            ((1<<java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_REF)
  1109            ((1<<java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_REF)
  1110            |(1<<java_lang_invoke_AdapterMethodHandle::OP_COLLECT_ARGS)
  1110            |(1<<java_lang_invoke_AdapterMethodHandle::OP_COLLECT_ARGS)
  1111            |(1<<java_lang_invoke_AdapterMethodHandle::OP_FOLD_ARGS)
  1111            |(1<<java_lang_invoke_AdapterMethodHandle::OP_FOLD_ARGS)
  1112             ))
  1112             ))