src/share/vm/oops/instanceKlass.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
7086585 Cdiff src/share/vm/oops/instanceKlass.hpp
src/share/vm/oops/instanceKlass.hpp
Print this page
*** 25,34 ****
--- 25,35 ----
#ifndef SHARE_VM_OOPS_INSTANCEKLASS_HPP
#define SHARE_VM_OOPS_INSTANCEKLASS_HPP
#include "oops/constMethodOop.hpp"
#include "oops/constantPoolOop.hpp"
+ #include "oops/fieldInfo.hpp"
#include "oops/instanceOop.hpp"
#include "oops/klassOop.hpp"
#include "oops/klassVtable.hpp"
#include "oops/objArrayOop.hpp"
#include "runtime/handles.hpp"
*** 226,235 ****
--- 227,237 ----
// (including inherited fields but after header_size()).
int _nonstatic_field_size;
int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
int _static_oop_field_count;// number of static oop fields in this klass
int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks
+ int _java_fields_count; // The number of declared Java fields
bool _is_marked_dependent; // used for marking during flushing and deoptimization
bool _rewritten; // methods rewritten.
bool _has_nonstatic_fields; // for sizing with UseCompressedOops
bool _should_verify_class; // allow caching of preverification
u2 _minor_version; // minor version number of class file
*** 305,336 ****
objArrayOop local_interfaces() const { return _local_interfaces; }
void set_local_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_local_interfaces, (oop) a); }
objArrayOop transitive_interfaces() const { return _transitive_interfaces; }
void set_transitive_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_transitive_interfaces, (oop) a); }
! // fields
! // Field info extracted from the class file and stored
! // as an array of 7 shorts
! enum FieldOffset {
! access_flags_offset = 0,
! name_index_offset = 1,
! signature_index_offset = 2,
! initval_index_offset = 3,
! low_offset = 4,
! high_offset = 5,
! generic_signature_offset = 6,
! next_offset = 7
! };
typeArrayOop fields() const { return _fields; }
! int offset_from_fields( int index ) const {
! return build_int_from_shorts( fields()->ushort_at(index + low_offset),
! fields()->ushort_at(index + high_offset) );
}
- void set_fields(typeArrayOop f) { oop_store_without_check((oop*) &_fields, (oop) f); }
-
// inner classes
typeArrayOop inner_classes() const { return _inner_classes; }
void set_inner_classes(typeArrayOop f) { oop_store_without_check((oop*) &_inner_classes, (oop) f); }
enum InnerClassAttributeOffset {
--- 307,339 ----
objArrayOop local_interfaces() const { return _local_interfaces; }
void set_local_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_local_interfaces, (oop) a); }
objArrayOop transitive_interfaces() const { return _transitive_interfaces; }
void set_transitive_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_transitive_interfaces, (oop) a); }
! private:
! friend class fieldDescriptor;
! FieldInfo* field(int index) const { return FieldInfo::from_field_array(_fields, index); }
+ public:
+ int field_offset (int index) const { return field(index)->offset(); }
+ int field_access_flags(int index) const { return field(index)->access_flags(); }
+ Symbol* field_name (int index) const { return field(index)->name(constants()); }
+ Symbol* field_signature (int index) const { return field(index)->signature(constants()); }
+
+ // Number of Java declared fields
+ int java_fields_count() const { return _java_fields_count; }
+
+ // Number of fields including any injected fields
+ int all_fields_count() const { return _fields->length() / sizeof(FieldInfo::field_slots); }
+
typeArrayOop fields() const { return _fields; }
!
! void set_fields(typeArrayOop f, int java_fields_count) {
! oop_store_without_check((oop*) &_fields, (oop) f);
! _java_fields_count = java_fields_count;
}
// inner classes
typeArrayOop inner_classes() const { return _inner_classes; }
void set_inner_classes(typeArrayOop f) { oop_store_without_check((oop*) &_inner_classes, (oop) f); }
enum InnerClassAttributeOffset {
*** 840,853 ****
#endif
// Verification
const char* internal_name() const;
void oop_verify_on(oop obj, outputStream* st);
-
- #ifndef PRODUCT
- static void verify_class_klass_nonstatic_oop_maps(klassOop k) PRODUCT_RETURN;
- #endif
};
inline methodOop instanceKlass::method_at_vtable(int index) {
#ifndef PRODUCT
assert(index >= 0, "valid vtable index");
--- 843,852 ----
src/share/vm/oops/instanceKlass.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File