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 |