Mercurial > hg > truffle
comparison src/cpu/x86/vm/x86_32.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 | e10e43e58e92 |
children | 2b8e28fdf503 |
comparison
equal
deleted
inserted
replaced
14415:666e6ce3976c | 14416:6a936747b569 |
---|---|
3753 // offsets are based on outgoing arguments, i.e. a CALLER setting up | 3753 // offsets are based on outgoing arguments, i.e. a CALLER setting up |
3754 // arguments for a CALLEE. Incoming stack arguments are | 3754 // arguments for a CALLEE. Incoming stack arguments are |
3755 // automatically biased by the preserve_stack_slots field above. | 3755 // automatically biased by the preserve_stack_slots field above. |
3756 c_calling_convention %{ | 3756 c_calling_convention %{ |
3757 // This is obviously always outgoing | 3757 // This is obviously always outgoing |
3758 (void) SharedRuntime::c_calling_convention(sig_bt, regs, length); | 3758 (void) SharedRuntime::c_calling_convention(sig_bt, regs, /*regs2=*/NULL, length); |
3759 %} | 3759 %} |
3760 | 3760 |
3761 // Location of C & interpreter return values | 3761 // Location of C & interpreter return values |
3762 c_return_value %{ | 3762 c_return_value %{ |
3763 assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" ); | 3763 assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" ); |