Florian's concern is valid.
"Range check elimination" means that C2 moves checks from a loop. Checks
are still present. Since 'state' array is not final we can't eliminate
range check. An other thing is an additional indirect load to access
arrays elements.
I would suggest to keep original code for 'subkey' and 'state' which use
separate values instead of arrays.
Regards,
Vladimir
On 2/17/15 1:00 PM, Anthony Scarpino wrote:
On 02/17/2015 12:05 PM, Florian Weimer wrote:
On 02/17/2015 08:59 PM, Anthony Scarpino wrote:
On 02/17/2015 12:57 AM, Florian Weimer wrote:
On 02/16/2015 10:11 PM, Anthony Scarpino wrote:
http://cr.openjdk.java.net/~ascarpino/8073108/jdk/webrev/
I think the “state” field in GHASH should be final. Is C2 able to
eliminate the array bounds checks? (Although it's not in the inner
loop
and thus probably not relevant for performance.)
I'm not sure want you asking about in regard to the bounds checking? Are
you asking about checking the bounds of "state"?
state[0] and state[1]—I wonder if those expressions need array bounds
checks when compiled.
The glossary says C2 eliminates array range checking.
http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html
Tony