hotspot/src/share/vm/oops/objArrayKlass.hpp
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 670 ddf3e9583f2f
child 1374 4c24294029a9
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
    61   // Compute protection domain
    61   // Compute protection domain
    62   oop protection_domain() { return Klass::cast(bottom_klass())->protection_domain(); }
    62   oop protection_domain() { return Klass::cast(bottom_klass())->protection_domain(); }
    63   // Compute class loader
    63   // Compute class loader
    64   oop class_loader() const { return Klass::cast(bottom_klass())->class_loader(); }
    64   oop class_loader() const { return Klass::cast(bottom_klass())->class_loader(); }
    65 
    65 
       
    66  private:
       
    67   // Either oop or narrowOop depending on UseCompressedOops.
       
    68   // must be called from within objArrayKlass.cpp
       
    69   template <class T> void do_copy(arrayOop s, T* src, arrayOop d,
       
    70                                   T* dst, int length, TRAPS);
    66  protected:
    71  protected:
    67   // Returns the objArrayKlass for n'th dimension.
    72   // Returns the objArrayKlass for n'th dimension.
    68   virtual klassOop array_klass_impl(bool or_null, int n, TRAPS);
    73   virtual klassOop array_klass_impl(bool or_null, int n, TRAPS);
    69 
    74 
    70   // Returns the array class with this class as element type.
    75   // Returns the array class with this class as element type.
    99     return oop_oop_iterate_v_m(obj, blk, mr);
   104     return oop_oop_iterate_v_m(obj, blk, mr);
   100   }
   105   }
   101 #define ObjArrayKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)   \
   106 #define ObjArrayKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)   \
   102   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);         \
   107   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);         \
   103   int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk,      \
   108   int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk,      \
   104                                      MemRegion mr);
   109                                      MemRegion mr);                     \
       
   110   int oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* blk,    \
       
   111                                      int start, int end);
   105 
   112 
   106   ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
   113   ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
   107   ALL_OOP_OOP_ITERATE_CLOSURES_3(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
   114   ALL_OOP_OOP_ITERATE_CLOSURES_3(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
   108 
   115 
   109   // JVM support
   116   // JVM support
   122  public:
   129  public:
   123   // Verification
   130   // Verification
   124   const char* internal_name() const;
   131   const char* internal_name() const;
   125   void oop_verify_on(oop obj, outputStream* st);
   132   void oop_verify_on(oop obj, outputStream* st);
   126   void oop_verify_old_oop(oop obj, oop* p, bool allow_dirty);
   133   void oop_verify_old_oop(oop obj, oop* p, bool allow_dirty);
       
   134   void oop_verify_old_oop(oop obj, narrowOop* p, bool allow_dirty);
   127 
   135 
   128 };
   136 };