comparison src/share/vm/opto/escape.hpp @ 1339:09ac706c2623

Merge
author asaha
date Wed, 24 Mar 2010 17:16:33 -0700
parents 7fee0a6cc6d4
children c18cbe5936b8
comparison
equal deleted inserted replaced
1338:f5dd08ad65df 1339:09ac706c2623
207 GrowableArray<PointsToNode> _nodes; // Connection graph nodes indexed 207 GrowableArray<PointsToNode> _nodes; // Connection graph nodes indexed
208 // by ideal node index. 208 // by ideal node index.
209 209
210 Unique_Node_List _delayed_worklist; // Nodes to be processed before 210 Unique_Node_List _delayed_worklist; // Nodes to be processed before
211 // the call build_connection_graph(). 211 // the call build_connection_graph().
212
213 GrowableArray<MergeMemNode *> _mergemem_worklist; // List of all MergeMem nodes
212 214
213 VectorSet _processed; // Records which nodes have been 215 VectorSet _processed; // Records which nodes have been
214 // processed. 216 // processed.
215 217
216 bool _collecting; // Indicates whether escape information 218 bool _collecting; // Indicates whether escape information
287 // ChecCastPP - allocation that this is a cast of 289 // ChecCastPP - allocation that this is a cast of
288 // allocation - CheckCastPP of the allocation 290 // allocation - CheckCastPP of the allocation
289 bool split_AddP(Node *addp, Node *base, PhaseGVN *igvn); 291 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); 292 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); 293 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); 294 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); 295 Node *find_inst_mem(Node *mem, int alias_idx,GrowableArray<PhiNode *> &orig_phi_worklist, PhaseGVN *igvn);
294 296
295 // Propagate unique types created for unescaped allocated objects 297 // Propagate unique types created for unescaped allocated objects
296 // through the graph 298 // through the graph
297 void split_unique_types(GrowableArray<Node *> &alloc_worklist); 299 void split_unique_types(GrowableArray<Node *> &alloc_worklist);
298 300
299 // manage entries in _node_map 301 // manage entries in _node_map
300 void set_map(int idx, Node *n) { _node_map.map(idx, n); } 302 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 Node *get_map(int idx) { return _node_map[idx]; }
303 PhiNode *get_map_phi(int idx) { 304 PhiNode *get_map_phi(int idx) {
304 Node *phi = _node_map[idx]; 305 Node *phi = _node_map[idx];
305 return (phi == NULL) ? NULL : phi->as_Phi(); 306 return (phi == NULL) ? NULL : phi->as_Phi();
306 } 307 }
312 _compile->record_for_igvn(n); 313 _compile->record_for_igvn(n);
313 } 314 }
314 315
315 // Set the escape state of a node 316 // Set the escape state of a node
316 void set_escape_state(uint ni, PointsToNode::EscapeState es); 317 void set_escape_state(uint ni, PointsToNode::EscapeState es);
318
319 // Search for objects which are not scalar replaceable.
320 void verify_escape_state(int nidx, VectorSet& ptset, PhaseTransform* phase);
317 321
318 public: 322 public:
319 ConnectionGraph(Compile *C); 323 ConnectionGraph(Compile *C);
320 324
321 // Check for non-escaping candidates 325 // Check for non-escaping candidates