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 |