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