RFR(M): 8028580: PPC64 (part 114/120): Support for Call nodes with constants.

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Nov 19 14:04:16 PST 2013


It is much better than I expected!
This is too good to be true :) Are you sure it is complete changes?

Few small notes:

Could you, please, change code (new and old) in in_RegMask() methods you 
touched in machnode.cpp to put 'return' on separate line after condition 
and use {} ?

I think the next code should be more general where you loop over all 
const inputs and ask each one for size:

add_size += (n->as_Mach()->ins_num_consts() * 8);

In ConstantTable::calculate_offsets_and_size() we have:

     int typesize = type_to_size_in_bytes(con->type());
     offset = align_size_up(offset, typesize);

Thanks,
Vladimir

On 11/19/13 3:58 AM, Lindenmaier, Goetz wrote:
> Hi,
>
> C2 Call nodes use several constant values. So far C2 does not
> support placing these values in the constant table of the nmethod.
>
> Among others, these constants are
>   - the called address
> - the inline cache
> - values required by the C-calling convention (on PPC, env pointer
>     and toc from function descriptor)
>
> This change extends Call nodes so that they can issue constants
> to the constant table.
> http://cr.openjdk.java.net/~goetz/webrevs/8028580-0-call/
>
> - Extend adlc to add edge to MachConstantBaseNode if
>    $constanttablebase is used in the specification.
> - Extend Call nodes to deliver proper register mask to
>    register allocation for this new input.
> - Add method ins_num_consts() so that number of required
>    constants can be specified in the call node.
> - Extend output() so that it reserves space for the
>    constants in the Calls, using ins_num_consts().
>
> Please review and test this change.
>
> Thanks and best regards,
>    Goetz.
>


More information about the ppc-aix-port-dev mailing list