A simple optimization proposal (original) (raw)
Martin Grajcar maaartinus at gmail.com
Wed Feb 12 15:32:42 PST 2014
- Previous message: A simple optimization proposal
- Next message: A simple optimization proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi John, Chris, and Vladimir,
I guess the Gist replacing
(x & array.length - 1) u< array.length by array.length != 0
can be easily changed to implement
(x & (m-1)) u< m, if and only if (m > 0)
in general, but I wonder if it will result in the optimal code for arrays, which can look like
int mask = array.length - 1; // already there if (mask < 0) goAway();
where the second line on i86 translates to simply jump if sign, i.e., a conditional branch without any test as the flags has been already set.
This uses the equivalence m > 0 if and only if (m-1) >= 0 which holds with the exception of m = Integer.MIN_VALUE. When checking array bounds, this exception can't occur.
Regards, Martin.
On Wed, Feb 12, 2014 at 11:00 PM, Vladimir Kozlov < vladimir.kozlov at oracle.com> wrote:
Looks reasonable. Kris, you need also look for other patterns listed in JDK-8003585. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20140213/999dc66d/attachment.html
- Previous message: A simple optimization proposal
- Next message: A simple optimization proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the hotspot-compiler-dev mailing list