Scalar replacable object pointers won't be equal to anything else
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Thu Dec 11 08:57:08 PST 2008
Ed, I am thinking that you may try to run an additional
IGVN optimization after EA in Compile::Optimize()
in case we found non globally escaping opbjects.
It may simplify the graph before loop optimizations:
if (!has_non_escaping_obj) {
_congraph = NULL;
}
if (failing()) return;
+
+ if (has_non_escaping_obj) {
+ igvn.optimize();
+ if (failing()) return;
+ }
}
Vlaidimir
Edward Lee wrote:
> On Tue, Dec 9, 2008 at 5:30 PM, Vladimir Kozlov <Vladimir.Kozlov at sun.com> wrote:
>> Could you try the next change in detect_ptr_independence()?:
>
> I had to add the phase to subnode's virtual sub() declaration because
> CmpPNode::sub passes NULL to things expecting a phase. I've attached
> what is working for me, and it makes one allocation scalar replacable.
> Additionally, with the "do escape analysis after an initial
> IterGVN.optimize pass," it's able to scalar replace another similar
> situation.
>
> Ed
More information about the hotspot-dev
mailing list