hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp
changeset 6772 2563324665d5
parent 6453 970dc585ab63
child 7114 65d21c4c6337
equal deleted inserted replaced
6771:3f9a5f169070 6772:2563324665d5
  3118   // rax: CallSite object (f1)
  3118   // rax: CallSite object (f1)
  3119   // rbx: unused (f2)
  3119   // rbx: unused (f2)
  3120   // rcx: receiver address
  3120   // rcx: receiver address
  3121   // rdx: flags (unused)
  3121   // rdx: flags (unused)
  3122 
  3122 
       
  3123   Register rax_callsite      = rax;
       
  3124   Register rcx_method_handle = rcx;
       
  3125 
  3123   if (ProfileInterpreter) {
  3126   if (ProfileInterpreter) {
  3124     Label L;
       
  3125     // %%% should make a type profile for any invokedynamic that takes a ref argument
  3127     // %%% should make a type profile for any invokedynamic that takes a ref argument
  3126     // profile this call
  3128     // profile this call
  3127     __ profile_call(r13);
  3129     __ profile_call(r13);
  3128   }
  3130   }
  3129 
  3131 
  3130   __ movptr(rcx, Address(rax, __ delayed_value(java_dyn_CallSite::target_offset_in_bytes, rcx)));
  3132   __ load_heap_oop(rcx_method_handle, Address(rax_callsite, __ delayed_value(java_dyn_CallSite::target_offset_in_bytes, rcx)));
  3131   __ null_check(rcx);
  3133   __ null_check(rcx_method_handle);
  3132   __ prepare_to_jump_from_interpreted();
  3134   __ prepare_to_jump_from_interpreted();
  3133   __ jump_to_method_handle_entry(rcx, rdx);
  3135   __ jump_to_method_handle_entry(rcx_method_handle, rdx);
  3134 }
  3136 }
  3135 
  3137 
  3136 
  3138 
  3137 //-----------------------------------------------------------------------------
  3139 //-----------------------------------------------------------------------------
  3138 // Allocation
  3140 // Allocation