src/hotspot/share/oops/arrayKlass.hpp
changeset 50752 9d62da00bf15
parent 50735 2f2af62dfac7
child 51329 9c68699bebe5
equal deleted inserted replaced
50751:d9132bdf6c30 50752:9d62da00bf15
    44 
    44 
    45  protected:
    45  protected:
    46   // Constructors
    46   // Constructors
    47   // The constructor with the Symbol argument does the real array
    47   // The constructor with the Symbol argument does the real array
    48   // initialization, the other is a dummy
    48   // initialization, the other is a dummy
    49   ArrayKlass(Symbol* name);
    49   ArrayKlass(Symbol* name, KlassID id);
    50   ArrayKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for cds"); }
    50   ArrayKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for cds"); }
    51 
    51 
    52  public:
    52  public:
    53   // Testing operation
    53   // Testing operation
    54   DEBUG_ONLY(bool is_array_klass_slow() const { return true; })
    54   DEBUG_ONLY(bool is_array_klass_slow() const { return true; })
   145   void verify_on(outputStream* st);
   145   void verify_on(outputStream* st);
   146 
   146 
   147   void oop_verify_on(oop obj, outputStream* st);
   147   void oop_verify_on(oop obj, outputStream* st);
   148 };
   148 };
   149 
   149 
   150 // Array oop iteration macros for declarations.
       
   151 // Used to generate the declarations in the *ArrayKlass header files.
       
   152 
       
   153 #define OOP_OOP_ITERATE_DECL_RANGE(OopClosureType, nv_suffix)                                   \
       
   154   void oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* closure, int start, int end);
       
   155 
       
   156 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
       
   157 // Named NO_BACKWARDS because the definition used by *ArrayKlass isn't reversed, see below.
       
   158 #define OOP_OOP_ITERATE_DECL_NO_BACKWARDS(OopClosureType, nv_suffix)            \
       
   159   void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure);
       
   160 #endif
       
   161 
       
   162 
       
   163 // Array oop iteration macros for definitions.
       
   164 // Used to generate the definitions in the *ArrayKlass.inline.hpp files.
       
   165 
       
   166 #define OOP_OOP_ITERATE_DEFN_RANGE(KlassType, OopClosureType, nv_suffix)                                  \
       
   167                                                                                                           \
       
   168 void KlassType::oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* closure, int start, int end) {  \
       
   169   oop_oop_iterate_range<nvs_to_bool(nv_suffix)>(obj, closure, start, end);                                \
       
   170 }
       
   171 
       
   172 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
       
   173 #define OOP_OOP_ITERATE_DEFN_NO_BACKWARDS(KlassType, OopClosureType, nv_suffix)           \
       
   174 void KlassType::oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {  \
       
   175   /* No reverse implementation ATM. */                                                    \
       
   176   oop_oop_iterate<nvs_to_bool(nv_suffix)>(obj, closure);                                  \
       
   177 }
       
   178 #else
       
   179 #define OOP_OOP_ITERATE_DEFN_NO_BACKWARDS(KlassType, OopClosureType, nv_suffix)
       
   180 #endif
       
   181 
       
   182 #endif // SHARE_VM_OOPS_ARRAYKLASS_HPP
   150 #endif // SHARE_VM_OOPS_ARRAYKLASS_HPP