src/share/vm/opto/escape.hpp

changeset 3318
cc81b9c09bbb
parent 3309
8c57262447d3
child 3651
ee138854b3a6
     1.1 --- a/src/share/vm/opto/escape.hpp	Tue Nov 22 09:45:57 2011 +0100
     1.2 +++ b/src/share/vm/opto/escape.hpp	Mon Nov 28 15:46:31 2011 -0800
     1.3 @@ -160,6 +160,7 @@
     1.4    Node* _node;                 // Ideal node corresponding to this PointsTo node.
     1.5    int   _offset;               // Object fields offsets.
     1.6    bool  _scalar_replaceable;   // Not escaped object could be replaced with scalar
     1.7 +  bool  _has_unknown_ptr;      // Has edge to phantom_object
     1.8  
     1.9  public:
    1.10    PointsToNode():
    1.11 @@ -168,6 +169,7 @@
    1.12      _edges(NULL),
    1.13      _node(NULL),
    1.14      _offset(-1),
    1.15 +    _has_unknown_ptr(false),
    1.16      _scalar_replaceable(true) {}
    1.17  
    1.18  
    1.19 @@ -175,6 +177,7 @@
    1.20    NodeType node_type() const { return _type;}
    1.21    int offset() { return _offset;}
    1.22    bool scalar_replaceable() { return _scalar_replaceable;}
    1.23 +  bool has_unknown_ptr()    { return _has_unknown_ptr;}
    1.24  
    1.25    void set_offset(int offs) { _offset = offs;}
    1.26    void set_escape_state(EscapeState state) { _escape = state; }
    1.27 @@ -183,6 +186,7 @@
    1.28      _type = ntype;
    1.29    }
    1.30    void set_scalar_replaceable(bool v) { _scalar_replaceable = v; }
    1.31 +  void set_has_unknown_ptr()          { _has_unknown_ptr = true; }
    1.32  
    1.33    // count of outgoing edges
    1.34    uint edge_count() const { return (_edges == NULL) ? 0 : _edges->length(); }
    1.35 @@ -250,6 +254,8 @@
    1.36    }
    1.37    uint nodes_size() const { return _nodes.length(); }
    1.38  
    1.39 +  bool is_null_ptr(uint idx) const { return (idx == _noop_null || idx == _oop_null); }
    1.40 +
    1.41    // Add node to ConnectionGraph.
    1.42    void add_node(Node *n, PointsToNode::NodeType nt, PointsToNode::EscapeState es, bool done);
    1.43  
    1.44 @@ -333,10 +339,9 @@
    1.45    }
    1.46  
    1.47    // Notify optimizer that a node has been modified
    1.48 -  // Node:  This assumes that escape analysis is run before
    1.49 -  //        PhaseIterGVN creation
    1.50    void record_for_optimizer(Node *n) {
    1.51      _igvn->_worklist.push(n);
    1.52 +    _igvn->add_users_to_worklist(n);
    1.53    }
    1.54  
    1.55    // Set the escape state of a node

mercurial