2323
2424#include " precompiled.hpp"
2525#include " asm/macroAssembler.inline.hpp"
26+ #include " classfile/javaClasses.hpp"
2627#include " logging/logStream.hpp"
2728#include " memory/resourceArea.hpp"
2829#include " prims/upcallLinker.hpp"
@@ -116,7 +117,7 @@ static void restore_callee_saved_registers(MacroAssembler* _masm, const ABIDescr
116117
117118static const int upcall_stub_code_base_size = 1024 ;
118119static const int upcall_stub_size_per_arg = 16 ; // arg save & restore + move
119- address UpcallLinker::make_upcall_stub (jobject receiver, Method* entry ,
120+ address UpcallLinker::make_upcall_stub (jobject receiver, Symbol* signature ,
120121 BasicType* out_sig_bt, int total_out_args,
121122 BasicType ret_type,
122123 jobject jabi, jobject jconv,
@@ -206,7 +207,6 @@ address UpcallLinker::make_upcall_stub(jobject receiver, Method* entry,
206207 __ block_comment (" on_entry {" );
207208 __ load_const_optimized (call_target_address, CAST_FROM_FN_PTR (uint64_t , UpcallLinker::on_entry));
208209 __ z_aghik (Z_ARG1, Z_SP, frame_data_offset);
209- __ load_const_optimized (Z_ARG2, (intptr_t )receiver);
210210 __ call (call_target_address);
211211 __ z_lgr (Z_thread, Z_RET);
212212 __ block_comment (" } on_entry" );
@@ -216,12 +216,11 @@ address UpcallLinker::make_upcall_stub(jobject receiver, Method* entry,
216216 arg_shuffle.generate (_masm, shuffle_reg, abi._shadow_space_bytes , frame::z_jit_out_preserve_size);
217217 __ block_comment (" } argument_shuffle" );
218218
219- __ block_comment (" receiver {" );
220- __ get_vm_result (Z_ARG1);
221- __ block_comment (" } receiver" );
222-
223- __ load_const_optimized (Z_method, (intptr_t )entry);
224- __ z_stg (Z_method, Address (Z_thread, in_bytes (JavaThread::callee_target_offset ())));
219+ __ block_comment (" load_target {" );
220+ __ load_const_optimized (Z_ARG1, (intptr_t )receiver);
221+ __ load_const_optimized (call_target_address, StubRoutines::upcall_stub_load_target ());
222+ __ call (call_target_address); // load taget Method* into Z_method
223+ __ block_comment (" } load_target" );
225224
226225 __ z_lg (call_target_address, Address (Z_method, in_bytes (Method::from_compiled_offset ())));
227226 __ call (call_target_address);
@@ -274,7 +273,7 @@ address UpcallLinker::make_upcall_stub(jobject receiver, Method* entry,
274273
275274#ifndef PRODUCT
276275 stringStream ss;
277- ss.print (" upcall_stub_%s" , entry-> signature () ->as_C_string ());
276+ ss.print (" upcall_stub_%s" , signature->as_C_string ());
278277 const char * name = _masm->code_string (ss.as_string ());
279278#else // PRODUCT
280279 const char * name = " upcall_stub" ;
0 commit comments