RFR(M): 8173470: [C2] Mask shift operands in ideal graph.

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Thu Feb 16 17:03:36 UTC 2017


Hi Lutz, 

thanks for the review.

What about naming them con and maskedCon?

Best regards,
  Goetz

> -----Original Message-----
> From: Schmidt, Lutz
> Sent: Donnerstag, 16. Februar 2017 17:55
> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; 'hotspot-compiler-
> dev at openjdk.java.net' <hotspot-compiler-dev at openjdk.java.net>
> Subject: Re: RFR(M): 8173470: [C2] Mask shift operands in ideal graph.
> 
> Goetz,
> 
> Your changes look good. Thanks for cleaning up!
> 
> I do have one request, though:
> In the Ideal methods, you are using either local variable names con/in2_con
> or shift/in2_shift. Could you please decide for one variant? Thank you.
> 
> Best regards,
> Lutz
> 
> From: hotspot-compiler-dev <hotspot-compiler-dev-
> bounces at openjdk.java.net <mailto:hotspot-compiler-dev-
> bounces at openjdk.java.net> > on behalf of Götz Lindenmaier
> <goetz.lindenmaier at sap.com <mailto:goetz.lindenmaier at sap.com> >
> Date: Donnerstag, 16. Februar 2017 um 09:26
> To: "'hotspot-compiler-dev at openjdk.java.net <mailto:'hotspot-compiler-
> dev at openjdk.java.net> '" <hotspot-compiler-dev at openjdk.java.net
> <mailto:hotspot-compiler-dev at openjdk.java.net> >
> Subject: RFR(M): 8173470: [C2] Mask shift operands in ideal graph.
> 
> 
> 
> Hi,
> 
> 
> 
> Constant shift operand > 31 (int) or > 63 (long) are pointless.
> 
> Mask them in the ideal graph, i.e.
> 
> if a constant is too large replace it by a smaller one.
> 
> The code also should use BitsPerJavaInteger instead of BitsPerInt.
> 
> Please review this change. I please need a sponsor.
> http://cr.openjdk.java.net/~goetz/wr17/8173470-maskShift/webrev.01
> 
> 
> From the standard:
> https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.19
> <https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.19>
> If the promoted type of the left-hand operand is int, only the five lowest-
> order bits of the right-hand operand are used as the shift distance. It is as if
> the right-hand operand were subjected to a bitwise logical AND operator &
> (§15.22.1) with the mask value 0x1f (0b11111). The shift distance actually
> used is therefore always in the range 0 to 31, inclusive.
> 
> If the promoted type of the left-hand operand is long, then only the six
> lowest-order bits of the right-hand operand are used as the shift distance. It
> is as if the right-hand operand were subjected to a bitwise logical AND
> operator & (§15.22.1) with the mask value 0x3f (0b111111). The shift
> distance actually used is therefore always in the range 0 to 63, inclusive.
> 
> 
> 
> Best regards,
> 
>   Goetz.



More information about the hotspot-compiler-dev mailing list