@@ -310,7 +310,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
310310
311311 uint int_args = 0 ;
312312 uint fp_args = 0 ;
313- uint stk_args = 0 ; // inc by 2 each time
313+ uint stk_args = 0 ;
314314
315315 for (int i = 0 ; i < total_args_passed; i++) {
316316 switch (sig_bt[i]) {
@@ -322,8 +322,9 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
322322 if (int_args < Argument::n_int_register_parameters_j) {
323323 regs[i].set1 (INT_ArgReg[int_args++]->as_VMReg ());
324324 } else {
325+ stk_args = align_up (stk_args, 2 );
325326 regs[i].set1 (VMRegImpl::stack2reg (stk_args));
326- stk_args += 2 ;
327+ stk_args += 1 ;
327328 }
328329 break ;
329330 case T_VOID:
@@ -340,6 +341,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
340341 if (int_args < Argument::n_int_register_parameters_j) {
341342 regs[i].set2 (INT_ArgReg[int_args++]->as_VMReg ());
342343 } else {
344+ stk_args = align_up (stk_args, 2 );
343345 regs[i].set2 (VMRegImpl::stack2reg (stk_args));
344346 stk_args += 2 ;
345347 }
@@ -348,15 +350,17 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
348350 if (fp_args < Argument::n_float_register_parameters_j) {
349351 regs[i].set1 (FP_ArgReg[fp_args++]->as_VMReg ());
350352 } else {
353+ stk_args = align_up (stk_args, 2 );
351354 regs[i].set1 (VMRegImpl::stack2reg (stk_args));
352- stk_args += 2 ;
355+ stk_args += 1 ;
353356 }
354357 break ;
355358 case T_DOUBLE:
356359 assert ((i + 1 ) < total_args_passed && sig_bt[i + 1 ] == T_VOID, " expecting half" );
357360 if (fp_args < Argument::n_float_register_parameters_j) {
358361 regs[i].set2 (FP_ArgReg[fp_args++]->as_VMReg ());
359362 } else {
363+ stk_args = align_up (stk_args, 2 );
360364 regs[i].set2 (VMRegImpl::stack2reg (stk_args));
361365 stk_args += 2 ;
362366 }
@@ -367,7 +371,7 @@ int SharedRuntime::java_calling_convention(const BasicType *sig_bt,
367371 }
368372 }
369373
370- return align_up ( stk_args, 2 ) ;
374+ return stk_args;
371375}
372376
373377// Patch the callers callsite with entry to compiled code if it exists.
0 commit comments