hotspot/src/share/vm/opto/callnode.hpp
changeset 11191 d54ab5dcba83
parent 10547 ea4a2ec31ae2
child 11431 5ca3a19e559a
equal deleted inserted replaced
11190:d561d41f241a 11191:d54ab5dcba83
   438 class SafePointScalarObjectNode: public TypeNode {
   438 class SafePointScalarObjectNode: public TypeNode {
   439   uint _first_index; // First input edge index of a SafePoint node where
   439   uint _first_index; // First input edge index of a SafePoint node where
   440                      // states of the scalarized object fields are collected.
   440                      // states of the scalarized object fields are collected.
   441   uint _n_fields;    // Number of non-static fields of the scalarized object.
   441   uint _n_fields;    // Number of non-static fields of the scalarized object.
   442   DEBUG_ONLY(AllocateNode* _alloc;)
   442   DEBUG_ONLY(AllocateNode* _alloc;)
       
   443 
       
   444   virtual uint hash() const ; // { return NO_HASH; }
       
   445   virtual uint cmp( const Node &n ) const;
       
   446 
   443 public:
   447 public:
   444   SafePointScalarObjectNode(const TypeOopPtr* tp,
   448   SafePointScalarObjectNode(const TypeOopPtr* tp,
   445 #ifdef ASSERT
   449 #ifdef ASSERT
   446                             AllocateNode* alloc,
   450                             AllocateNode* alloc,
   447 #endif
   451 #endif
   452   virtual const RegMask &out_RegMask() const;
   456   virtual const RegMask &out_RegMask() const;
   453   virtual uint           match_edge(uint idx) const;
   457   virtual uint           match_edge(uint idx) const;
   454 
   458 
   455   uint first_index() const { return _first_index; }
   459   uint first_index() const { return _first_index; }
   456   uint n_fields()    const { return _n_fields; }
   460   uint n_fields()    const { return _n_fields; }
   457   DEBUG_ONLY(AllocateNode* alloc() const { return _alloc; })
   461 
   458 
   462 #ifdef ASSERT
   459   // SafePointScalarObject should be always pinned to the control edge
   463   AllocateNode* alloc() const { return _alloc; }
   460   // of the SafePoint node for which it was generated.
   464 #endif
   461   virtual bool pinned() const; // { return true; }
       
   462 
       
   463   // SafePointScalarObject depends on the SafePoint node
       
   464   // for which it was generated.
       
   465   virtual bool depends_only_on_test() const; // { return false; }
       
   466 
   465 
   467   virtual uint size_of() const { return sizeof(*this); }
   466   virtual uint size_of() const { return sizeof(*this); }
   468 
   467 
   469   // Assumes that "this" is an argument to a safepoint node "s", and that
   468   // Assumes that "this" is an argument to a safepoint node "s", and that
   470   // "new_call" is being created to correspond to "s".  But the difference
   469   // "new_call" is being created to correspond to "s".  But the difference
   878   // mark node as eliminated and update the counter if there is one
   877   // mark node as eliminated and update the counter if there is one
   879   void set_eliminated();
   878   void set_eliminated();
   880 
   879 
   881   bool is_coarsened()  { return _coarsened; }
   880   bool is_coarsened()  { return _coarsened; }
   882   void set_coarsened() { _coarsened = true; }
   881   void set_coarsened() { _coarsened = true; }
       
   882   void clear_coarsened() { _coarsened = false; }
   883 
   883 
   884   // locking does not modify its arguments
   884   // locking does not modify its arguments
   885   virtual bool        may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;}
   885   virtual bool        may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;}
   886 
   886 
   887 #ifndef PRODUCT
   887 #ifndef PRODUCT