318 // interfaces
319 objArrayOop local_interfaces() const { return _local_interfaces; }
320 void set_local_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_local_interfaces, (oop) a); }
321 objArrayOop transitive_interfaces() const { return _transitive_interfaces; }
322 void set_transitive_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_transitive_interfaces, (oop) a); }
323
324 private:
325 friend class fieldDescriptor;
326 FieldInfo* field(int index) const { return FieldInfo::from_field_array(_fields, index); }
327
328 public:
329 int field_offset (int index) const { return field(index)->offset(); }
330 int field_access_flags(int index) const { return field(index)->access_flags(); }
331 Symbol* field_name (int index) const { return field(index)->name(constants()); }
332 Symbol* field_signature (int index) const { return field(index)->signature(constants()); }
333
334 // Number of Java declared fields
335 int java_fields_count() const { return (int)_java_fields_count; }
336
337 // Number of fields including any injected fields
338 int all_fields_count() const { return _fields->length() / sizeof(FieldInfo::field_slots); }
339
340 typeArrayOop fields() const { return _fields; }
341
342 void set_fields(typeArrayOop f, u2 java_fields_count) {
343 oop_store_without_check((oop*) &_fields, (oop) f);
344 _java_fields_count = java_fields_count;
345 }
346
347 // inner classes
348 typeArrayOop inner_classes() const { return _inner_classes; }
349 void set_inner_classes(typeArrayOop f) { oop_store_without_check((oop*) &_inner_classes, (oop) f); }
350
351 enum InnerClassAttributeOffset {
352 // From http://mirror.eng/products/jdk/1.1/docs/guide/innerclasses/spec/innerclasses.doc10.html#18814
353 inner_class_inner_class_info_offset = 0,
354 inner_class_outer_class_info_offset = 1,
355 inner_class_inner_name_offset = 2,
356 inner_class_access_flags_offset = 3,
357 inner_class_next_offset = 4
358 };
|
318 // interfaces
319 objArrayOop local_interfaces() const { return _local_interfaces; }
320 void set_local_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_local_interfaces, (oop) a); }
321 objArrayOop transitive_interfaces() const { return _transitive_interfaces; }
322 void set_transitive_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_transitive_interfaces, (oop) a); }
323
324 private:
325 friend class fieldDescriptor;
326 FieldInfo* field(int index) const { return FieldInfo::from_field_array(_fields, index); }
327
328 public:
329 int field_offset (int index) const { return field(index)->offset(); }
330 int field_access_flags(int index) const { return field(index)->access_flags(); }
331 Symbol* field_name (int index) const { return field(index)->name(constants()); }
332 Symbol* field_signature (int index) const { return field(index)->signature(constants()); }
333
334 // Number of Java declared fields
335 int java_fields_count() const { return (int)_java_fields_count; }
336
337 // Number of fields including any injected fields
338 int all_fields_count() const { return _fields->length() / FieldInfo::field_slots; }
339
340 typeArrayOop fields() const { return _fields; }
341
342 void set_fields(typeArrayOop f, u2 java_fields_count) {
343 oop_store_without_check((oop*) &_fields, (oop) f);
344 _java_fields_count = java_fields_count;
345 }
346
347 // inner classes
348 typeArrayOop inner_classes() const { return _inner_classes; }
349 void set_inner_classes(typeArrayOop f) { oop_store_without_check((oop*) &_inner_classes, (oop) f); }
350
351 enum InnerClassAttributeOffset {
352 // From http://mirror.eng/products/jdk/1.1/docs/guide/innerclasses/spec/innerclasses.doc10.html#18814
353 inner_class_inner_class_info_offset = 0,
354 inner_class_outer_class_info_offset = 1,
355 inner_class_inner_name_offset = 2,
356 inner_class_access_flags_offset = 3,
357 inner_class_next_offset = 4
358 };
|