Request for reviews (M): 7105605: Use EA info to optimize pointers compare
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Nov 9 11:27:51 PST 2011
Thank you, Tom
Tom Rodriguez wrote:
> I like the renaming you did in optimize_ptr_compare. This comment:
>
> + // Check if one set has only not escaping allocations.
>
> seems like it needs more detail explaining why that's important. I presume it's because if they are all non-escaping then they must be disjoint from the other set. Is that right?
There is explicit disjoint check (!ptset1.disjoint(ptset2)) before that code. It
guaranties that not escaping allocations from one set are not present in second
set. And they did not lost their identity since they did not escape.
> Does the _scalar_replaceable flag change any of this? I thought if that was false then we might lose track of the identity of the object.
No, if Connection Graph is correct. I actually hit problem today with OSR state
loads which were not marked as loads of unknown object.
The condition "set has only not escaping allocations" means java code merged
only non escaping allocations and Connection Graph knowns which allocations.
>
> How effective is this at eliminating compares? Is it useful even if there aren't non-escaping object?
Unfortunately I don't see improvement in refworkload. I added test case which
shows that this optimization eliminates next check in HashMap.get():
(k = e.key) == key
But in JBB it is already eliminated by EliminateAutoBox optimization.
Thanks,
Vladimir
>
> tom
>
> On Nov 8, 2011, at 8:27 PM, Vladimir Kozlov wrote:
>
>> http://cr.openjdk.java.net/~kvn/7105605/webrev
>>
>> 7105605: Use EA info to optimize pointers compare
>>
>> EA Connection Graph can help to optimize pointers compare for non escaping allocations.
>>
>> Tested with CTW, jtreg, NSK, refworkload.
>>
>> Thanks,
>> Vladimir
>
More information about the hotspot-compiler-dev
mailing list