204 // The contents of the Record attribute.
205 Array<RecordComponent*>* _record_components;
206
207 // the source debug extension for this klass, null if not specified.
208 // Specified as UTF-8 string without terminating zero byte in the classfile,
209 // it is stored in the instanceklass as a null-terminated UTF-8 string
210 const char* _source_debug_extension;
211
212 // Number of heapOopSize words used by non-static fields in this klass
213 // (including inherited fields but after header_size()).
214 int _nonstatic_field_size;
215 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
216 int _nonstatic_oop_map_size; // size in words of nonstatic oop map blocks
217 int _itable_len; // length of Java itable (in words)
218
219 // The NestHost attribute. The class info index for the class
220 // that is the nest-host of this class. This data has not been validated.
221 u2 _nest_host_index;
222 u2 _this_class_index; // constant pool entry
223 u2 _static_oop_field_count; // number of static oop fields in this klass
224
225 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change
226
227 // Class states are defined as ClassState (see above).
228 // Place the _init_state here to utilize the unused 2-byte after
229 // _idnum_allocated_count.
230 volatile ClassState _init_state; // state of class
231
232 u1 _reference_type; // reference type
233
234 // State is set either at parse time or while executing, atomically to not disturb other state
235 InstanceKlassFlags _misc_flags;
236
237 JavaThread* volatile _init_thread; // Pointer to current thread doing initialization (to handle recursive initialization)
238
239 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily)
240 JNIid* _jni_ids; // First JNI identifier for static fields in this class
241 jmethodID* volatile _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or null if none
242 nmethodBucket* volatile _dep_context; // packed DependencyContext structure
243 uint64_t volatile _dep_context_last_cleaned;
318 bool shared_loading_failed() const { return _misc_flags.shared_loading_failed(); }
319
320 void set_shared_loading_failed() { _misc_flags.set_shared_loading_failed(true); }
321
322 bool has_nonstatic_fields() const { return _misc_flags.has_nonstatic_fields(); }
323 void set_has_nonstatic_fields(bool b) { _misc_flags.set_has_nonstatic_fields(b); }
324
325 bool has_localvariable_table() const { return _misc_flags.has_localvariable_table(); }
326 void set_has_localvariable_table(bool b) { _misc_flags.set_has_localvariable_table(b); }
327
328 // field sizes
329 int nonstatic_field_size() const { return _nonstatic_field_size; }
330 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; }
331
332 int static_field_size() const { return _static_field_size; }
333 void set_static_field_size(int size) { _static_field_size = size; }
334
335 int static_oop_field_count() const { return (int)_static_oop_field_count; }
336 void set_static_oop_field_count(u2 size) { _static_oop_field_count = size; }
337
338 // Java itable
339 int itable_length() const { return _itable_len; }
340 void set_itable_length(int len) { _itable_len = len; }
341
342 // array klasses
343 ObjArrayKlass* array_klasses() const { return _array_klasses; }
344 inline ObjArrayKlass* array_klasses_acquire() const; // load with acquire semantics
345 inline void release_set_array_klasses(ObjArrayKlass* k); // store with release semantics
346 void set_array_klasses(ObjArrayKlass* k) { _array_klasses = k; }
347
348 // methods
349 Array<Method*>* methods() const { return _methods; }
350 void set_methods(Array<Method*>* a) { _methods = a; }
351 Method* method_with_idnum(int idnum) const;
352 Method* method_with_orig_idnum(int idnum) const;
353 Method* method_with_orig_idnum(int idnum, int version) const;
354
355 // method ordering
356 Array<int>* method_ordering() const { return _method_ordering; }
357 void set_method_ordering(Array<int>* m) { _method_ordering = m; }
|
204 // The contents of the Record attribute.
205 Array<RecordComponent*>* _record_components;
206
207 // the source debug extension for this klass, null if not specified.
208 // Specified as UTF-8 string without terminating zero byte in the classfile,
209 // it is stored in the instanceklass as a null-terminated UTF-8 string
210 const char* _source_debug_extension;
211
212 // Number of heapOopSize words used by non-static fields in this klass
213 // (including inherited fields but after header_size()).
214 int _nonstatic_field_size;
215 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
216 int _nonstatic_oop_map_size; // size in words of nonstatic oop map blocks
217 int _itable_len; // length of Java itable (in words)
218
219 // The NestHost attribute. The class info index for the class
220 // that is the nest-host of this class. This data has not been validated.
221 u2 _nest_host_index;
222 u2 _this_class_index; // constant pool entry
223 u2 _static_oop_field_count; // number of static oop fields in this klass
224 u2 _nonstatic_oop_field_count;// number of non-static oop fields in this klass
225 u2 _java_fields_count; // The number of declared Java fields
226
227 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change
228
229 // Class states are defined as ClassState (see above).
230 // Place the _init_state here to utilize the unused 2-byte after
231 // _idnum_allocated_count.
232 volatile ClassState _init_state; // state of class
233
234 u1 _reference_type; // reference type
235
236 // State is set either at parse time or while executing, atomically to not disturb other state
237 InstanceKlassFlags _misc_flags;
238
239 JavaThread* volatile _init_thread; // Pointer to current thread doing initialization (to handle recursive initialization)
240
241 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily)
242 JNIid* _jni_ids; // First JNI identifier for static fields in this class
243 jmethodID* volatile _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or null if none
244 nmethodBucket* volatile _dep_context; // packed DependencyContext structure
245 uint64_t volatile _dep_context_last_cleaned;
320 bool shared_loading_failed() const { return _misc_flags.shared_loading_failed(); }
321
322 void set_shared_loading_failed() { _misc_flags.set_shared_loading_failed(true); }
323
324 bool has_nonstatic_fields() const { return _misc_flags.has_nonstatic_fields(); }
325 void set_has_nonstatic_fields(bool b) { _misc_flags.set_has_nonstatic_fields(b); }
326
327 bool has_localvariable_table() const { return _misc_flags.has_localvariable_table(); }
328 void set_has_localvariable_table(bool b) { _misc_flags.set_has_localvariable_table(b); }
329
330 // field sizes
331 int nonstatic_field_size() const { return _nonstatic_field_size; }
332 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; }
333
334 int static_field_size() const { return _static_field_size; }
335 void set_static_field_size(int size) { _static_field_size = size; }
336
337 int static_oop_field_count() const { return (int)_static_oop_field_count; }
338 void set_static_oop_field_count(u2 size) { _static_oop_field_count = size; }
339
340 int nonstatic_oop_field_count() const { return (int)_nonstatic_oop_field_count; }
341 void set_nonstatic_oop_field_count(u2 size) { _nonstatic_oop_field_count = size; }
342
343 // Java itable
344 int itable_length() const { return _itable_len; }
345 void set_itable_length(int len) { _itable_len = len; }
346
347 // array klasses
348 ObjArrayKlass* array_klasses() const { return _array_klasses; }
349 inline ObjArrayKlass* array_klasses_acquire() const; // load with acquire semantics
350 inline void release_set_array_klasses(ObjArrayKlass* k); // store with release semantics
351 void set_array_klasses(ObjArrayKlass* k) { _array_klasses = k; }
352
353 // methods
354 Array<Method*>* methods() const { return _methods; }
355 void set_methods(Array<Method*>* a) { _methods = a; }
356 Method* method_with_idnum(int idnum) const;
357 Method* method_with_orig_idnum(int idnum) const;
358 Method* method_with_orig_idnum(int idnum, int version) const;
359
360 // method ordering
361 Array<int>* method_ordering() const { return _method_ordering; }
362 void set_method_ordering(Array<int>* m) { _method_ordering = m; }
|