hotspot/src/share/vm/oops/arrayKlass.hpp
changeset 26412 80741eb33ba2
parent 26135 82b516c550f7
child 27020 a7c8010446c2
equal deleted inserted replaced
26408:d6defe172e25 26412:80741eb33ba2
    37  private:
    37  private:
    38   int      _dimension;         // This is n'th-dimensional array.
    38   int      _dimension;         // This is n'th-dimensional array.
    39   Klass* volatile _higher_dimension;  // Refers the (n+1)'th-dimensional array (if present).
    39   Klass* volatile _higher_dimension;  // Refers the (n+1)'th-dimensional array (if present).
    40   Klass* volatile _lower_dimension;   // Refers the (n-1)'th-dimensional array (if present).
    40   Klass* volatile _lower_dimension;   // Refers the (n-1)'th-dimensional array (if present).
    41   int      _vtable_len;        // size of vtable for this klass
    41   int      _vtable_len;        // size of vtable for this klass
    42   oop      _component_mirror;  // component type, as a java/lang/Class
       
    43 
    42 
    44  protected:
    43  protected:
    45   // Constructors
    44   // Constructors
    46   // The constructor with the Symbol argument does the real array
    45   // The constructor with the Symbol argument does the real array
    47   // initialization, the other is a dummy
    46   // initialization, the other is a dummy
    67   // offset of first element, including any padding for the sake of alignment
    66   // offset of first element, including any padding for the sake of alignment
    68   int  array_header_in_bytes() const    { return layout_helper_header_size(layout_helper()); }
    67   int  array_header_in_bytes() const    { return layout_helper_header_size(layout_helper()); }
    69   int  log2_element_size() const        { return layout_helper_log2_element_size(layout_helper()); }
    68   int  log2_element_size() const        { return layout_helper_log2_element_size(layout_helper()); }
    70   // type of elements (T_OBJECT for both oop arrays and array-arrays)
    69   // type of elements (T_OBJECT for both oop arrays and array-arrays)
    71   BasicType element_type() const        { return layout_helper_element_type(layout_helper()); }
    70   BasicType element_type() const        { return layout_helper_element_type(layout_helper()); }
    72 
       
    73   oop  component_mirror() const         { return _component_mirror; }
       
    74   void set_component_mirror(oop m)      { klass_oop_store(&_component_mirror, m); }
       
    75   oop* adr_component_mirror()           { return (oop*)&this->_component_mirror;}
       
    76 
       
    77   // Compiler/Interpreter offset
       
    78   static ByteSize component_mirror_offset() { return in_ByteSize(offset_of(ArrayKlass, _component_mirror)); }
       
    79 
    71 
    80   virtual Klass* java_super() const;//{ return SystemDictionary::Object_klass(); }
    72   virtual Klass* java_super() const;//{ return SystemDictionary::Object_klass(); }
    81 
    73 
    82   // Allocation
    74   // Allocation
    83   // Sizes points to the first dimension of the array, subsequent dimensions
    75   // Sizes points to the first dimension of the array, subsequent dimensions
   120  public:
   112  public:
   121   // Iterators
   113   // Iterators
   122   void array_klasses_do(void f(Klass* k));
   114   void array_klasses_do(void f(Klass* k));
   123   void array_klasses_do(void f(Klass* k, TRAPS), TRAPS);
   115   void array_klasses_do(void f(Klass* k, TRAPS), TRAPS);
   124 
   116 
   125   // GC support
       
   126   virtual void oops_do(OopClosure* cl);
       
   127 
       
   128   // Return a handle.
   117   // Return a handle.
   129   static void     complete_create_array_klass(ArrayKlass* k, KlassHandle super_klass, TRAPS);
   118   static void     complete_create_array_klass(ArrayKlass* k, KlassHandle super_klass, TRAPS);
   130 
   119 
   131 
   120 
   132   // jvm support
   121   // jvm support