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