--- a/hotspot/src/share/vm/opto/escape.hpp Sat Nov 06 18:52:07 2010 -0700
+++ b/hotspot/src/share/vm/opto/escape.hpp Sat Nov 06 20:35:36 2010 -0700
@@ -219,6 +219,9 @@
// is still being collected. If false,
// no new nodes will be processed.
+ bool _progress; // Indicates whether new Graph's edges
+ // were created.
+
uint _phantom_object; // Index of globally escaping object
// that pointer values loaded from
// a field which has not been set
@@ -266,6 +269,13 @@
void add_deferred_edge(uint from_i, uint to_i);
void add_field_edge(uint from_i, uint to_i, int offs);
+ // Add an edge of the specified type pointing to the specified target.
+ // Set _progress if new edge is added.
+ void add_edge(PointsToNode *f, uint to_i, PointsToNode::EdgeType et) {
+ uint e_cnt = f->edge_count();
+ f->add_edge(to_i, et);
+ _progress |= (f->edge_count() != e_cnt);
+ }
// Add an edge to node given by "to_i" from any field of adr_i whose offset
// matches "offset" A deferred edge is added if to_i is a LocalVar, and