src/hotspot/share/opto/escape.cpp
changeset 49982 9042ffe5b7fe
parent 49752 93d84f667d12
child 50180 ffa644980dff
equal deleted inserted replaced
49981:bd0a95bec96b 49982:9042ffe5b7fe
    35 #include "opto/compile.hpp"
    35 #include "opto/compile.hpp"
    36 #include "opto/escape.hpp"
    36 #include "opto/escape.hpp"
    37 #include "opto/phaseX.hpp"
    37 #include "opto/phaseX.hpp"
    38 #include "opto/movenode.hpp"
    38 #include "opto/movenode.hpp"
    39 #include "opto/rootnode.hpp"
    39 #include "opto/rootnode.hpp"
    40 #if INCLUDE_ALL_GCS
    40 #if INCLUDE_G1GC
    41 #include "gc/g1/g1ThreadLocalData.hpp"
    41 #include "gc/g1/g1ThreadLocalData.hpp"
    42 #endif // INCLUDE_ALL_GCS
    42 #endif // INCLUDE_G1GC
    43 
    43 
    44 ConnectionGraph::ConnectionGraph(Compile * C, PhaseIterGVN *igvn) :
    44 ConnectionGraph::ConnectionGraph(Compile * C, PhaseIterGVN *igvn) :
    45   _nodes(C->comp_arena(), C->unique(), C->unique(), NULL),
    45   _nodes(C->comp_arena(), C->unique(), C->unique(), NULL),
    46   _in_worklist(C->comp_arena()),
    46   _in_worklist(C->comp_arena()),
    47   _next_pidx(0),
    47   _next_pidx(0),
   536         // Stored value escapes in unsafe access.
   536         // Stored value escapes in unsafe access.
   537         if ((opcode == Op_StoreP) && adr_type->isa_rawptr()) {
   537         if ((opcode == Op_StoreP) && adr_type->isa_rawptr()) {
   538           // Pointer stores in G1 barriers looks like unsafe access.
   538           // Pointer stores in G1 barriers looks like unsafe access.
   539           // Ignore such stores to be able scalar replace non-escaping
   539           // Ignore such stores to be able scalar replace non-escaping
   540           // allocations.
   540           // allocations.
       
   541 #if INCLUDE_G1GC
   541           if (UseG1GC && adr->is_AddP()) {
   542           if (UseG1GC && adr->is_AddP()) {
   542             Node* base = get_addp_base(adr);
   543             Node* base = get_addp_base(adr);
   543             if (base->Opcode() == Op_LoadP &&
   544             if (base->Opcode() == Op_LoadP &&
   544                 base->in(MemNode::Address)->is_AddP()) {
   545                 base->in(MemNode::Address)->is_AddP()) {
   545               adr = base->in(MemNode::Address);
   546               adr = base->in(MemNode::Address);
   553                   break; // G1 post barrier card address store.
   554                   break; // G1 post barrier card address store.
   554                 }
   555                 }
   555               }
   556               }
   556             }
   557             }
   557           }
   558           }
       
   559 #endif
   558           delayed_worklist->push(n); // Process unsafe access later.
   560           delayed_worklist->push(n); // Process unsafe access later.
   559           break;
   561           break;
   560         }
   562         }
   561 #ifdef ASSERT
   563 #ifdef ASSERT
   562         n->dump(1);
   564         n->dump(1);