src/share/vm/opto/escape.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6896727 Sdiff src/share/vm/opto

src/share/vm/opto/escape.hpp

Print this page




 272   // Add a deferred  edge from node given by "from_i" to any field
 273   // of adr_i whose offset matches "offset"
 274   void add_deferred_edge_to_fields(uint from_i, uint adr, int offs);
 275 
 276 
 277   // Remove outgoing deferred edges from the node referenced by "ni".
 278   // Any outgoing edges from the target of the deferred edge are copied
 279   // to "ni".
 280   void remove_deferred(uint ni, GrowableArray<uint>* deferred_edges, VectorSet* visited);
 281 
 282   Node_Array _node_map; // used for bookeeping during type splitting
 283                         // Used for the following purposes:
 284                         // Memory Phi    - most recent unique Phi split out
 285                         //                 from this Phi
 286                         // MemNode       - new memory input for this node
 287                         // ChecCastPP    - allocation that this is a cast of
 288                         // allocation    - CheckCastPP of the allocation
 289   bool split_AddP(Node *addp, Node *base,  PhaseGVN  *igvn);
 290   PhiNode *create_split_phi(PhiNode *orig_phi, int alias_idx, GrowableArray<PhiNode *>  &orig_phi_worklist, PhaseGVN  *igvn, bool &new_created);
 291   PhiNode *split_memory_phi(PhiNode *orig_phi, int alias_idx, GrowableArray<PhiNode *>  &orig_phi_worklist, PhaseGVN  *igvn);
 292   Node *find_mem(Node *mem, int alias_idx, PhaseGVN  *igvn);
 293   Node *find_inst_mem(Node *mem, int alias_idx,GrowableArray<PhiNode *>  &orig_phi_worklist,  PhaseGVN  *igvn);
 294 
 295   // Propagate unique types created for unescaped allocated objects
 296   // through the graph
 297   void split_unique_types(GrowableArray<Node *>  &alloc_worklist);
 298 
 299   // manage entries in _node_map
 300   void  set_map(int idx, Node *n)        { _node_map.map(idx, n); }
 301   void  set_map_phi(int idx, PhiNode *p) { _node_map.map(idx, (Node *) p); }
 302   Node *get_map(int idx)                 { return _node_map[idx]; }
 303   PhiNode *get_map_phi(int idx) {
 304     Node *phi = _node_map[idx];
 305     return (phi == NULL) ? NULL : phi->as_Phi();
 306   }
 307 
 308   // Notify optimizer that a node has been modified
 309   // Node:  This assumes that escape analysis is run before
 310   //        PhaseIterGVN creation
 311   void record_for_optimizer(Node *n) {
 312     _compile->record_for_igvn(n);
 313   }
 314 
 315   // Set the escape state of a node
 316   void set_escape_state(uint ni, PointsToNode::EscapeState es);
 317 
 318 public:
 319   ConnectionGraph(Compile *C);
 320 
 321   // Check for non-escaping candidates




 272   // Add a deferred  edge from node given by "from_i" to any field
 273   // of adr_i whose offset matches "offset"
 274   void add_deferred_edge_to_fields(uint from_i, uint adr, int offs);
 275 
 276 
 277   // Remove outgoing deferred edges from the node referenced by "ni".
 278   // Any outgoing edges from the target of the deferred edge are copied
 279   // to "ni".
 280   void remove_deferred(uint ni, GrowableArray<uint>* deferred_edges, VectorSet* visited);
 281 
 282   Node_Array _node_map; // used for bookeeping during type splitting
 283                         // Used for the following purposes:
 284                         // Memory Phi    - most recent unique Phi split out
 285                         //                 from this Phi
 286                         // MemNode       - new memory input for this node
 287                         // ChecCastPP    - allocation that this is a cast of
 288                         // allocation    - CheckCastPP of the allocation
 289   bool split_AddP(Node *addp, Node *base,  PhaseGVN  *igvn);
 290   PhiNode *create_split_phi(PhiNode *orig_phi, int alias_idx, GrowableArray<PhiNode *>  &orig_phi_worklist, PhaseGVN  *igvn, bool &new_created);
 291   PhiNode *split_memory_phi(PhiNode *orig_phi, int alias_idx, GrowableArray<PhiNode *>  &orig_phi_worklist, PhaseGVN  *igvn);
 292   void  move_inst_mem(Node* n, GrowableArray<PhiNode *>  &orig_phis, PhaseGVN *igvn);
 293   Node *find_inst_mem(Node *mem, int alias_idx,GrowableArray<PhiNode *>  &orig_phi_worklist,  PhaseGVN  *igvn);
 294 
 295   // Propagate unique types created for unescaped allocated objects
 296   // through the graph
 297   void split_unique_types(GrowableArray<Node *>  &alloc_worklist);
 298 
 299   // manage entries in _node_map
 300   void  set_map(int idx, Node *n)        { _node_map.map(idx, n); }

 301   Node *get_map(int idx)                 { return _node_map[idx]; }
 302   PhiNode *get_map_phi(int idx) {
 303     Node *phi = _node_map[idx];
 304     return (phi == NULL) ? NULL : phi->as_Phi();
 305   }
 306 
 307   // Notify optimizer that a node has been modified
 308   // Node:  This assumes that escape analysis is run before
 309   //        PhaseIterGVN creation
 310   void record_for_optimizer(Node *n) {
 311     _compile->record_for_igvn(n);
 312   }
 313 
 314   // Set the escape state of a node
 315   void set_escape_state(uint ni, PointsToNode::EscapeState es);
 316 
 317 public:
 318   ConnectionGraph(Compile *C);
 319 
 320   // Check for non-escaping candidates


src/share/vm/opto/escape.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File