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