23
23
24
24
#include " precompiled.hpp"
25
25
#include " asm/macroAssembler.inline.hpp"
26
+ #include " classfile/javaClasses.hpp"
26
27
#include " logging/logStream.hpp"
27
28
#include " memory/resourceArea.hpp"
28
29
#include " prims/upcallLinker.hpp"
@@ -116,7 +117,7 @@ static void restore_callee_saved_registers(MacroAssembler* _masm, const ABIDescr
116
117
117
118
static const int upcall_stub_code_base_size = 1024 ;
118
119
static 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 ,
120
121
BasicType* out_sig_bt, int total_out_args,
121
122
BasicType ret_type,
122
123
jobject jabi, jobject jconv,
@@ -206,7 +207,6 @@ address UpcallLinker::make_upcall_stub(jobject receiver, Method* entry,
206
207
__ block_comment (" on_entry {" );
207
208
__ load_const_optimized (call_target_address, CAST_FROM_FN_PTR (uint64_t , UpcallLinker::on_entry));
208
209
__ z_aghik (Z_ARG1, Z_SP, frame_data_offset);
209
- __ load_const_optimized (Z_ARG2, (intptr_t )receiver);
210
210
__ call (call_target_address);
211
211
__ z_lgr (Z_thread, Z_RET);
212
212
__ block_comment (" } on_entry" );
@@ -216,12 +216,11 @@ address UpcallLinker::make_upcall_stub(jobject receiver, Method* entry,
216
216
arg_shuffle.generate (_masm, shuffle_reg, abi._shadow_space_bytes , frame::z_jit_out_preserve_size);
217
217
__ block_comment (" } argument_shuffle" );
218
218
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" );
225
224
226
225
__ z_lg (call_target_address, Address (Z_method, in_bytes (Method::from_compiled_offset ())));
227
226
__ call (call_target_address);
@@ -274,7 +273,7 @@ address UpcallLinker::make_upcall_stub(jobject receiver, Method* entry,
274
273
275
274
#ifndef PRODUCT
276
275
stringStream ss;
277
- ss.print (" upcall_stub_%s" , entry-> signature () ->as_C_string ());
276
+ ss.print (" upcall_stub_%s" , signature->as_C_string ());
278
277
const char * name = _masm->code_string (ss.as_string ());
279
278
#else // PRODUCT
280
279
const char * name = " upcall_stub" ;
0 commit comments