comparison src/cpu/sparc/vm/sparc.ad @ 14416:6a936747b569

8024344: PPC64 (part 112): C argument in register AND stack slot. Summary: On PPC, the first 13 floating point arguments to C calls are passed in floating point registers. Also, all but the first 8 arguments are passed on the stack. So there can be floating point arguments that are passed on the stack and in a register. We duplicate the regs datastructure in c_calling_convention() to represent this. Reviewed-by: kvn, cjplummer
author goetz
date Thu, 12 Sep 2013 13:51:13 -0700
parents 740e263c80c6
children 2b8e28fdf503
comparison
equal deleted inserted replaced
14415:666e6ce3976c 14416:6a936747b569
3216 // Body of function which returns an OptoRegs array locating 3216 // Body of function which returns an OptoRegs array locating
3217 // arguments either in registers or in stack slots for callin 3217 // arguments either in registers or in stack slots for callin
3218 // C. 3218 // C.
3219 c_calling_convention %{ 3219 c_calling_convention %{
3220 // This is obviously always outgoing 3220 // This is obviously always outgoing
3221 (void) SharedRuntime::c_calling_convention(sig_bt, regs, length); 3221 (void) SharedRuntime::c_calling_convention(sig_bt, regs, /*regs2=*/NULL, length);
3222 %} 3222 %}
3223 3223
3224 // Location of native (C/C++) and interpreter return values. This is specified to 3224 // Location of native (C/C++) and interpreter return values. This is specified to
3225 // be the same as Java. In the 32-bit VM, long values are actually returned from 3225 // be the same as Java. In the 32-bit VM, long values are actually returned from
3226 // native calls in O0:O1 and returned to the interpreter in I0:I1. The copying 3226 // native calls in O0:O1 and returned to the interpreter in I0:I1. The copying
9116 effect(USE labl); 9116 effect(USE labl);
9117 9117
9118 size(4); 9118 size(4);
9119 ins_cost(BRANCH_COST); 9119 ins_cost(BRANCH_COST);
9120 format %{ "BA $labl\t! short branch" %} 9120 format %{ "BA $labl\t! short branch" %}
9121 ins_encode %{ 9121 ins_encode %{
9122 Label* L = $labl$$label; 9122 Label* L = $labl$$label;
9123 assert(__ use_cbcond(*L), "back to back cbcond"); 9123 assert(__ use_cbcond(*L), "back to back cbcond");
9124 __ ba_short(*L); 9124 __ ba_short(*L);
9125 %} 9125 %}
9126 ins_short_branch(1); 9126 ins_short_branch(1);