equal
deleted
inserted
replaced
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); |