201 // The contents of the Record attribute.
202 Array<RecordComponent*>* _record_components;
203
204 // the source debug extension for this klass, NULL if not specified.
205 // Specified as UTF-8 string without terminating zero byte in the classfile,
206 // it is stored in the instanceklass as a NULL-terminated UTF-8 string
207 const char* _source_debug_extension;
208
209 // Number of heapOopSize words used by non-static fields in this klass
210 // (including inherited fields but after header_size()).
211 int _nonstatic_field_size;
212 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
213 int _nonstatic_oop_map_size; // size in words of nonstatic oop map blocks
214 int _itable_len; // length of Java itable (in words)
215
216 // The NestHost attribute. The class info index for the class
217 // that is the nest-host of this class. This data has not been validated.
218 u2 _nest_host_index;
219 u2 _this_class_index; // constant pool entry
220 u2 _static_oop_field_count; // number of static oop fields in this klass
221 u2 _java_fields_count; // The number of declared Java fields
222
223 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change
224
225 // _is_marked_dependent can be set concurrently, thus cannot be part of the
226 // _misc_flags right now.
227 bool _is_marked_dependent; // used for marking during flushing and deoptimization
228
229 ClassState _init_state; // state of class
230
231 u1 _reference_type; // reference type
232
233 // State is set while executing, eventually atomically to not disturb other state
234 InstanceKlassFlags _misc_flags;
235
236 Monitor* _init_monitor; // mutual exclusion to _init_state and _init_thread.
237 Thread* _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
332 void set_shared_class_loader_type(s2 loader_type) { _misc_flags.set_shared_class_loader_type(loader_type); }
333 void assign_class_loader_type() { _misc_flags.assign_class_loader_type(_class_loader_data); }
334 #endif
335
336 bool has_nonstatic_fields() const { return _misc_flags.has_nonstatic_fields(); }
337 void set_has_nonstatic_fields(bool b) { _misc_flags.set_has_nonstatic_fields(b); }
338
339 bool has_localvariable_table() const { return _misc_flags.has_localvariable_table(); }
340 void set_has_localvariable_table(bool b) { _misc_flags.set_has_localvariable_table(b); }
341
342 // field sizes
343 int nonstatic_field_size() const { return _nonstatic_field_size; }
344 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; }
345
346 int static_field_size() const { return _static_field_size; }
347 void set_static_field_size(int size) { _static_field_size = size; }
348
349 int static_oop_field_count() const { return (int)_static_oop_field_count; }
350 void set_static_oop_field_count(u2 size) { _static_oop_field_count = size; }
351
352 // Java itable
353 int itable_length() const { return _itable_len; }
354 void set_itable_length(int len) { _itable_len = len; }
355
356 // array klasses
357 ObjArrayKlass* array_klasses() const { return _array_klasses; }
358 inline ObjArrayKlass* array_klasses_acquire() const; // load with acquire semantics
359 inline void release_set_array_klasses(ObjArrayKlass* k); // store with release semantics
360
361 // methods
362 Array<Method*>* methods() const { return _methods; }
363 void set_methods(Array<Method*>* a) { _methods = a; }
364 Method* method_with_idnum(int idnum);
365 Method* method_with_orig_idnum(int idnum);
366 Method* method_with_orig_idnum(int idnum, int version);
367
368 // method ordering
369 Array<int>* method_ordering() const { return _method_ordering; }
370 void set_method_ordering(Array<int>* m) { _method_ordering = m; }
371 void copy_method_ordering(const intArray* m, TRAPS);
|
201 // The contents of the Record attribute.
202 Array<RecordComponent*>* _record_components;
203
204 // the source debug extension for this klass, NULL if not specified.
205 // Specified as UTF-8 string without terminating zero byte in the classfile,
206 // it is stored in the instanceklass as a NULL-terminated UTF-8 string
207 const char* _source_debug_extension;
208
209 // Number of heapOopSize words used by non-static fields in this klass
210 // (including inherited fields but after header_size()).
211 int _nonstatic_field_size;
212 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
213 int _nonstatic_oop_map_size; // size in words of nonstatic oop map blocks
214 int _itable_len; // length of Java itable (in words)
215
216 // The NestHost attribute. The class info index for the class
217 // that is the nest-host of this class. This data has not been validated.
218 u2 _nest_host_index;
219 u2 _this_class_index; // constant pool entry
220 u2 _static_oop_field_count; // number of static oop fields in this klass
221 u2 _nonstatic_oop_field_count;// number of non-static oop fields in this klass
222 u2 _java_fields_count; // The number of declared Java fields
223
224 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change
225
226 // _is_marked_dependent can be set concurrently, thus cannot be part of the
227 // _misc_flags right now.
228 bool _is_marked_dependent; // used for marking during flushing and deoptimization
229
230 ClassState _init_state; // state of class
231
232 u1 _reference_type; // reference type
233
234 // State is set while executing, eventually atomically to not disturb other state
235 InstanceKlassFlags _misc_flags;
236
237 Monitor* _init_monitor; // mutual exclusion to _init_state and _init_thread.
238 Thread* _init_thread; // Pointer to current thread doing initialization (to handle recursive initialization)
239
240 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily)
241 JNIid* _jni_ids; // First JNI identifier for static fields in this class
333 void set_shared_class_loader_type(s2 loader_type) { _misc_flags.set_shared_class_loader_type(loader_type); }
334 void assign_class_loader_type() { _misc_flags.assign_class_loader_type(_class_loader_data); }
335 #endif
336
337 bool has_nonstatic_fields() const { return _misc_flags.has_nonstatic_fields(); }
338 void set_has_nonstatic_fields(bool b) { _misc_flags.set_has_nonstatic_fields(b); }
339
340 bool has_localvariable_table() const { return _misc_flags.has_localvariable_table(); }
341 void set_has_localvariable_table(bool b) { _misc_flags.set_has_localvariable_table(b); }
342
343 // field sizes
344 int nonstatic_field_size() const { return _nonstatic_field_size; }
345 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; }
346
347 int static_field_size() const { return _static_field_size; }
348 void set_static_field_size(int size) { _static_field_size = size; }
349
350 int static_oop_field_count() const { return (int)_static_oop_field_count; }
351 void set_static_oop_field_count(u2 size) { _static_oop_field_count = size; }
352
353 int nonstatic_oop_field_count() const { return (int)_nonstatic_oop_field_count; }
354 void set_nonstatic_oop_field_count(u2 size) { _nonstatic_oop_field_count = size; }
355
356 // Java itable
357 int itable_length() const { return _itable_len; }
358 void set_itable_length(int len) { _itable_len = len; }
359
360 // array klasses
361 ObjArrayKlass* array_klasses() const { return _array_klasses; }
362 inline ObjArrayKlass* array_klasses_acquire() const; // load with acquire semantics
363 inline void release_set_array_klasses(ObjArrayKlass* k); // store with release semantics
364
365 // methods
366 Array<Method*>* methods() const { return _methods; }
367 void set_methods(Array<Method*>* a) { _methods = a; }
368 Method* method_with_idnum(int idnum);
369 Method* method_with_orig_idnum(int idnum);
370 Method* method_with_orig_idnum(int idnum, int version);
371
372 // method ordering
373 Array<int>* method_ordering() const { return _method_ordering; }
374 void set_method_ordering(Array<int>* m) { _method_ordering = m; }
375 void copy_method_ordering(const intArray* m, TRAPS);
|