206 // The contents of the Record attribute.
207 Array<RecordComponent*>* _record_components;
208
209 // the source debug extension for this klass, null if not specified.
210 // Specified as UTF-8 string without terminating zero byte in the classfile,
211 // it is stored in the instanceklass as a null-terminated UTF-8 string
212 const char* _source_debug_extension;
213
214 // Number of heapOopSize words used by non-static fields in this klass
215 // (including inherited fields but after header_size()).
216 int _nonstatic_field_size;
217 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
218 int _nonstatic_oop_map_size; // size in words of nonstatic oop map blocks
219 int _itable_len; // length of Java itable (in words)
220
221 // The NestHost attribute. The class info index for the class
222 // that is the nest-host of this class. This data has not been validated.
223 u2 _nest_host_index;
224 u2 _this_class_index; // constant pool entry
225 u2 _static_oop_field_count; // number of static oop fields in this klass
226
227 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change
228
229 volatile ClassState _init_state; // state of class
230
231 u1 _reference_type; // reference type
232
233 // State is set either at parse time or while executing, atomically to not disturb other state
234 InstanceKlassFlags _misc_flags;
235
236 Monitor* _init_monitor; // mutual exclusion to _init_state and _init_thread.
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;
244 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class
245 #if INCLUDE_JVMTI
322 void set_shared_class_loader_type(s2 loader_type) { _misc_flags.set_shared_class_loader_type(loader_type); }
323 void assign_class_loader_type() { _misc_flags.assign_class_loader_type(_class_loader_data); }
324 #endif
325
326 bool has_nonstatic_fields() const { return _misc_flags.has_nonstatic_fields(); }
327 void set_has_nonstatic_fields(bool b) { _misc_flags.set_has_nonstatic_fields(b); }
328
329 bool has_localvariable_table() const { return _misc_flags.has_localvariable_table(); }
330 void set_has_localvariable_table(bool b) { _misc_flags.set_has_localvariable_table(b); }
331
332 // field sizes
333 int nonstatic_field_size() const { return _nonstatic_field_size; }
334 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; }
335
336 int static_field_size() const { return _static_field_size; }
337 void set_static_field_size(int size) { _static_field_size = size; }
338
339 int static_oop_field_count() const { return (int)_static_oop_field_count; }
340 void set_static_oop_field_count(u2 size) { _static_oop_field_count = size; }
341
342 // Java itable
343 int itable_length() const { return _itable_len; }
344 void set_itable_length(int len) { _itable_len = len; }
345
346 // array klasses
347 ObjArrayKlass* array_klasses() const { return _array_klasses; }
348 inline ObjArrayKlass* array_klasses_acquire() const; // load with acquire semantics
349 inline void release_set_array_klasses(ObjArrayKlass* k); // store with release semantics
350 void set_array_klasses(ObjArrayKlass* k) { _array_klasses = k; }
351
352 // methods
353 Array<Method*>* methods() const { return _methods; }
354 void set_methods(Array<Method*>* a) { _methods = a; }
355 Method* method_with_idnum(int idnum);
356 Method* method_with_orig_idnum(int idnum);
357 Method* method_with_orig_idnum(int idnum, int version);
358
359 // method ordering
360 Array<int>* method_ordering() const { return _method_ordering; }
361 void set_method_ordering(Array<int>* m) { _method_ordering = m; }
|
206 // The contents of the Record attribute.
207 Array<RecordComponent*>* _record_components;
208
209 // the source debug extension for this klass, null if not specified.
210 // Specified as UTF-8 string without terminating zero byte in the classfile,
211 // it is stored in the instanceklass as a null-terminated UTF-8 string
212 const char* _source_debug_extension;
213
214 // Number of heapOopSize words used by non-static fields in this klass
215 // (including inherited fields but after header_size()).
216 int _nonstatic_field_size;
217 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
218 int _nonstatic_oop_map_size; // size in words of nonstatic oop map blocks
219 int _itable_len; // length of Java itable (in words)
220
221 // The NestHost attribute. The class info index for the class
222 // that is the nest-host of this class. This data has not been validated.
223 u2 _nest_host_index;
224 u2 _this_class_index; // constant pool entry
225 u2 _static_oop_field_count; // number of static oop fields in this klass
226 u2 _nonstatic_oop_field_count;// number of non-static oop fields in this klass
227 u2 _java_fields_count; // The number of declared Java fields
228
229 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change
230
231 volatile ClassState _init_state; // state of class
232
233 u1 _reference_type; // reference type
234
235 // State is set either at parse time or while executing, atomically to not disturb other state
236 InstanceKlassFlags _misc_flags;
237
238 Monitor* _init_monitor; // mutual exclusion to _init_state and _init_thread.
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;
246 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class
247 #if INCLUDE_JVMTI
324 void set_shared_class_loader_type(s2 loader_type) { _misc_flags.set_shared_class_loader_type(loader_type); }
325 void assign_class_loader_type() { _misc_flags.assign_class_loader_type(_class_loader_data); }
326 #endif
327
328 bool has_nonstatic_fields() const { return _misc_flags.has_nonstatic_fields(); }
329 void set_has_nonstatic_fields(bool b) { _misc_flags.set_has_nonstatic_fields(b); }
330
331 bool has_localvariable_table() const { return _misc_flags.has_localvariable_table(); }
332 void set_has_localvariable_table(bool b) { _misc_flags.set_has_localvariable_table(b); }
333
334 // field sizes
335 int nonstatic_field_size() const { return _nonstatic_field_size; }
336 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; }
337
338 int static_field_size() const { return _static_field_size; }
339 void set_static_field_size(int size) { _static_field_size = size; }
340
341 int static_oop_field_count() const { return (int)_static_oop_field_count; }
342 void set_static_oop_field_count(u2 size) { _static_oop_field_count = size; }
343
344 int nonstatic_oop_field_count() const { return (int)_nonstatic_oop_field_count; }
345 void set_nonstatic_oop_field_count(u2 size) { _nonstatic_oop_field_count = size; }
346
347 // Java itable
348 int itable_length() const { return _itable_len; }
349 void set_itable_length(int len) { _itable_len = len; }
350
351 // array klasses
352 ObjArrayKlass* array_klasses() const { return _array_klasses; }
353 inline ObjArrayKlass* array_klasses_acquire() const; // load with acquire semantics
354 inline void release_set_array_klasses(ObjArrayKlass* k); // store with release semantics
355 void set_array_klasses(ObjArrayKlass* k) { _array_klasses = k; }
356
357 // methods
358 Array<Method*>* methods() const { return _methods; }
359 void set_methods(Array<Method*>* a) { _methods = a; }
360 Method* method_with_idnum(int idnum);
361 Method* method_with_orig_idnum(int idnum);
362 Method* method_with_orig_idnum(int idnum, int version);
363
364 // method ordering
365 Array<int>* method_ordering() const { return _method_ordering; }
366 void set_method_ordering(Array<int>* m) { _method_ordering = m; }
|