RFR(M): 8073480: C2 should optimize explicit range checks
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Mar 13 00:02:19 UTC 2015
In general this looks good.
There are a lot of BoolTest:: checks. May be we should add new static
methods to BoolTest class.
I see you use in several places (mostly in
reroute_side_effect_free_unc()) igvn->transform() without overwriting
initial node:
igvn->transform(use);
which may not be correct if for some reasons node is transformed. You
need to do:
use = igvn->transform(use);
reroute_side_effect_free_unc() why clone uncommon trap and not use new
Region node? You can pass flag to merge_uncommon_traps() ot indicate
when Region node is available already.
Thanks,
Vladimir
On 3/12/15 10:34 AM, Roland Westrelin wrote:
> Here is a new webrev for this:
>
> http://cr.openjdk.java.net/~roland/8073480/webrev.01/
>
> I took Vladimir’s comments into account (added test for null inputs in several places, strengthen the test to make sure a middle guard is a null check, renamed functions) and added code that look for a ConvI2L between the range check and a memory access that follows and annotate that ConvI2L with a tighter type so the movslq that Paul spotted are removed from the final code.
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list