RFR(M): 8024342: PPC64 (part 111): Support for C calling conventions that require 64-bit ints.

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Thu Sep 12 04:42:50 PDT 2013

Hi Vladimir, 

> Can you move convert_ints_to_longints*() methods from sharedRuntime.cpp 
> to sharedRuntime_ppc.cpp? They are static and not used in any other places.
I really would like to keep this code in the shared file because:
 - The code is completely plarform independent.
 - The feature needs several shared changes, so I think it's natural to keep all
   it's platform independent parts in the shared files.
 - Internally, we use it also for zArch, so for us it would reduce code duplication
    to have it in the shared file.

> Why only intrinsify_fill changed? What about arraycopy and other stubs 
> which use int parameter?
Yes, that looks strange.  For stub calls that should not be needed, as
we also implement the callee.  I'll investigate this in our VM, and try
to remove the change to runtime.cpp and loopTransform.cpp.
I'll come up with a new webrev then.  Thanks for pointing me to this!

> loopTransform.cpp: I don't think ConvI2L will work for t==T_FLOAT. Also 
> you can use (t == T_INT || is_subword_type(t)) check instead for int types.
Above, a MoveF2I is issued, therefore ConvI2L works.  Probably conversion 
is pointless, but the type is correct then.

Thanks for the review and for adapting the closed stuff to 0112.

Best regards,

On 9/9/13 1:42 AM, Lindenmaier, Goetz wrote:
> Hi,
> This is the first of about 10 changes taking us to a rudimentary c2
> compiler on ppc64.
> Some platforms, as ppc and s390x/zArch require that 32-bit ints are
> passed as 64-bit values to C functions. This change adds support to
> adapt the signature and to issue proper casts to c2-compiled stubs. The
> functions are used in generate_native_wrapper(). We also need to adapt
> the signature in PhaseIdealLoop::intrinsify_fill().
> We add a function  c_calling_convention_requires_ints_as_longs()to the platform files of sharedRuntime, with
> enables this feature on ppc.  All other shared changes depend on this function.  The code should not affect the existing
> platforms.  The usage of the code is already visible in the sharedRuntime_ppc64 file in the staging repository (protected by
> ifdef COMPILER2).  Seehttp://hg.openjdk.java.net/ppc-aix-port/stage/hotspot/file/bdd155477289/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
> line 1752 ff.
> http://cr.openjdk.java.net/~goetz/webrevs/8024342-intArg/
> Please review and test this change.
> Best regards,
>    Goetz.

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