src/share/vm/opto/callnode.hpp

changeset 500
99269dbf4ba8
parent 498
eac007780a58
child 509
2a9af0b9cb1c
     1.1 --- a/src/share/vm/opto/callnode.hpp	Thu Mar 13 16:31:32 2008 -0700
     1.2 +++ b/src/share/vm/opto/callnode.hpp	Fri Mar 14 15:26:33 2008 -0700
     1.3 @@ -388,6 +388,9 @@
     1.4    void               set_next_exception(SafePointNode* n);
     1.5    bool                   has_exceptions() const { return next_exception() != NULL; }
     1.6  
     1.7 +  // Does this node have a use of n other than in debug information?
     1.8 +  virtual bool           has_non_debug_use(Node *n)  {return false; }
     1.9 +
    1.10    // Standard Node stuff
    1.11    virtual int            Opcode() const;
    1.12    virtual bool           pinned() const { return true; }
    1.13 @@ -457,7 +460,6 @@
    1.14    const TypeFunc *_tf;        // Function type
    1.15    address      _entry_point;  // Address of method being called
    1.16    float        _cnt;          // Estimate of number of times called
    1.17 -  PointsToNode::EscapeState _escape_state;
    1.18  
    1.19    CallNode(const TypeFunc* tf, address addr, const TypePtr* adr_type)
    1.20      : SafePointNode(tf->domain()->cnt(), NULL, adr_type),
    1.21 @@ -467,7 +469,6 @@
    1.22    {
    1.23      init_class_id(Class_Call);
    1.24      init_flags(Flag_is_Call);
    1.25 -    _escape_state = PointsToNode::UnknownEscape;
    1.26    }
    1.27  
    1.28    const TypeFunc* tf()        const { return _tf; }
    1.29 @@ -493,6 +494,15 @@
    1.30    // the node the JVMState must be cloned.
    1.31    virtual void        clone_jvms() { }   // default is not to clone
    1.32  
    1.33 +  // Returns true if the call may modify n
    1.34 +  virtual bool        may_modify(const TypePtr *addr_t, PhaseTransform *phase);
    1.35 +  // Does this node have a use of n other than in debug information?
    1.36 +  virtual bool        has_non_debug_use(Node *n);
    1.37 +  // Returns the unique CheckCastPP of a call
    1.38 +  // or result projection is there are several CheckCastPP
    1.39 +  // or returns NULL if there is no one.
    1.40 +  Node *result_cast();
    1.41 +
    1.42    virtual uint match_edge(uint idx) const;
    1.43  
    1.44  #ifndef PRODUCT
    1.45 @@ -689,6 +699,9 @@
    1.46    virtual uint ideal_reg() const { return Op_RegP; }
    1.47    virtual bool        guaranteed_safepoint()  { return false; }
    1.48  
    1.49 +  // allocations do not modify their arguments
    1.50 +  virtual bool        may_modify(const TypePtr *addr_t, PhaseTransform *phase) { return false;}
    1.51 +
    1.52    // Pattern-match a possible usage of AllocateNode.
    1.53    // Return null if no allocation is recognized.
    1.54    // The operand is the pointer produced by the (possible) allocation.
    1.55 @@ -801,6 +814,9 @@
    1.56    // mark node as eliminated and update the counter if there is one
    1.57    void set_eliminated();
    1.58  
    1.59 +  // locking does not modify its arguments
    1.60 +  virtual bool        may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;}
    1.61 +
    1.62  #ifndef PRODUCT
    1.63    void create_lock_counter(JVMState* s);
    1.64    NamedCounter* counter() const { return _counter; }

mercurial