< prev index next >

src/hotspot/share/opto/escape.cpp

Print this page

        

@@ -35,10 +35,11 @@
 #include "opto/compile.hpp"
 #include "opto/escape.hpp"
 #include "opto/phaseX.hpp"
 #include "opto/movenode.hpp"
 #include "opto/rootnode.hpp"
+#include "opto/subnode.hpp"
 
 ConnectionGraph::ConnectionGraph(Compile * C, PhaseIterGVN *igvn) :
   _nodes(C->comp_arena(), C->unique(), C->unique(), NULL),
   _in_worklist(C->comp_arena()),
   _next_pidx(0),

@@ -158,11 +159,12 @@
     if (n->is_MergeMem()) {
       // Collect all MergeMem nodes to add memory slices for
       // scalar replaceable objects in split_unique_types().
       _mergemem_worklist.append(n->as_MergeMem());
     } else if (OptimizePtrCompare && n->is_Cmp() &&
-               (n->Opcode() == Op_CmpP || n->Opcode() == Op_CmpN)) {
+               ((n->Opcode() == Op_CmpP && !(((CmpPNode*)n)->has_perturbed_operand() != NULL)) ||
+                 n->Opcode() == Op_CmpN)) {
       // Collect compare pointers nodes.
       ptr_cmp_worklist.append(n);
     } else if (n->is_MemBarStoreStore()) {
       // Collect all MemBarStoreStore nodes so that depending on the
       // escape status of the associated Allocate node some of them
< prev index next >