src/hotspot/share/opto/arraycopynode.hpp
changeset 58931 304c63b17b07
parent 54048 744dc9c33676
child 59324 5e8f9713e343
equal deleted inserted replaced
58930:a4ddd1667c72 58931:304c63b17b07
    36   // What kind of arraycopy variant is this?
    36   // What kind of arraycopy variant is this?
    37   enum {
    37   enum {
    38     None,            // not set yet
    38     None,            // not set yet
    39     ArrayCopy,       // System.arraycopy()
    39     ArrayCopy,       // System.arraycopy()
    40     CloneBasic,      // A clone that can be copied by 64 bit chunks
    40     CloneBasic,      // A clone that can be copied by 64 bit chunks
    41     CloneOop,        // An oop array clone
    41     CloneOopArray,   // An oop array clone
    42     CopyOf,          // Arrays.copyOf()
    42     CopyOf,          // Arrays.copyOf()
    43     CopyOfRange      // Arrays.copyOfRange()
    43     CopyOfRange      // Arrays.copyOfRange()
    44   } _kind;
    44   } _kind;
    45 
    45 
    46 #ifndef PRODUCT
    46 #ifndef PRODUCT
   145   void connect_outputs(GraphKit* kit);
   145   void connect_outputs(GraphKit* kit);
   146 
   146 
   147   bool is_arraycopy()             const  { assert(_kind != None, "should bet set"); return _kind == ArrayCopy; }
   147   bool is_arraycopy()             const  { assert(_kind != None, "should bet set"); return _kind == ArrayCopy; }
   148   bool is_arraycopy_validated()   const  { assert(_kind != None, "should bet set"); return _kind == ArrayCopy && _arguments_validated; }
   148   bool is_arraycopy_validated()   const  { assert(_kind != None, "should bet set"); return _kind == ArrayCopy && _arguments_validated; }
   149   bool is_clonebasic()            const  { assert(_kind != None, "should bet set"); return _kind == CloneBasic; }
   149   bool is_clonebasic()            const  { assert(_kind != None, "should bet set"); return _kind == CloneBasic; }
   150   bool is_cloneoop()              const  { assert(_kind != None, "should bet set"); return _kind == CloneOop; }
   150   bool is_clone_oop_array()       const  { assert(_kind != None, "should bet set"); return _kind == CloneOopArray; }
   151   bool is_copyof()                const  { assert(_kind != None, "should bet set"); return _kind == CopyOf; }
   151   bool is_copyof()                const  { assert(_kind != None, "should bet set"); return _kind == CopyOf; }
   152   bool is_copyof_validated()      const  { assert(_kind != None, "should bet set"); return _kind == CopyOf && _arguments_validated; }
   152   bool is_copyof_validated()      const  { assert(_kind != None, "should bet set"); return _kind == CopyOf && _arguments_validated; }
   153   bool is_copyofrange()           const  { assert(_kind != None, "should bet set"); return _kind == CopyOfRange; }
   153   bool is_copyofrange()           const  { assert(_kind != None, "should bet set"); return _kind == CopyOfRange; }
   154   bool is_copyofrange_validated() const  { assert(_kind != None, "should bet set"); return _kind == CopyOfRange && _arguments_validated; }
   154   bool is_copyofrange_validated() const  { assert(_kind != None, "should bet set"); return _kind == CopyOfRange && _arguments_validated; }
   155 
   155 
   156   void set_arraycopy(bool validated)   { assert(_kind == None, "shouldn't bet set yet"); _kind = ArrayCopy; _arguments_validated = validated; }
   156   void set_arraycopy(bool validated)   { assert(_kind == None, "shouldn't bet set yet"); _kind = ArrayCopy; _arguments_validated = validated; }
   157   void set_clonebasic()                { assert(_kind == None, "shouldn't bet set yet"); _kind = CloneBasic; }
   157   void set_clonebasic()                { assert(_kind == None, "shouldn't bet set yet"); _kind = CloneBasic; }
   158   void set_cloneoop()                  { assert(_kind == None, "shouldn't bet set yet"); _kind = CloneOop; }
   158   void set_clone_oop_array()           { assert(_kind == None, "shouldn't bet set yet"); _kind = CloneOopArray; }
   159   void set_copyof(bool validated)      { assert(_kind == None, "shouldn't bet set yet"); _kind = CopyOf; _arguments_validated = validated; }
   159   void set_copyof(bool validated)      { assert(_kind == None, "shouldn't bet set yet"); _kind = CopyOf; _arguments_validated = validated; }
   160   void set_copyofrange(bool validated) { assert(_kind == None, "shouldn't bet set yet"); _kind = CopyOfRange; _arguments_validated = validated; }
   160   void set_copyofrange(bool validated) { assert(_kind == None, "shouldn't bet set yet"); _kind = CopyOfRange; _arguments_validated = validated; }
   161 
   161 
   162   virtual int Opcode() const;
   162   virtual int Opcode() const;
   163   virtual uint size_of() const; // Size is bigger
   163   virtual uint size_of() const; // Size is bigger