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; }