src/share/vm/oops/instanceKlass.hpp
Print this page
@@ -238,11 +238,10 @@
u2 _minor_version; // minor version number of class file
u2 _major_version; // major version number of class file
Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization)
int _vtable_len; // length of Java vtable (in words)
int _itable_len; // length of Java itable (in words)
- ReferenceType _reference_type; // reference type
OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily)
JNIid* _jni_ids; // First JNI identifier for static fields in this class
jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none
int* _methods_cached_itable_indices; // itable_index cache for JNI invoke corresponding to methods idnum, or NULL
nmethodBucket* _dependencies; // list of dependent nmethods
@@ -263,10 +262,12 @@
// Class states are defined as ClassState (see above).
// Place the _init_state here to utilize the unused 2-byte after
// _idnum_allocated_count.
u1 _init_state; // state of class
+ u1 _reference_type; // reference type
+
// embedded Java vtable follows here
// embedded Java itables follows here
// embedded static fields follows here
// embedded nonstatic oop-map blocks follows here
@@ -405,12 +406,15 @@
// set the class to initialized if no static initializer is present
void eager_initialize(Thread *thread);
// reference type
- ReferenceType reference_type() const { return _reference_type; }
- void set_reference_type(ReferenceType t) { _reference_type = t; }
+ ReferenceType reference_type() const { return (ReferenceType)_reference_type; }
+ void set_reference_type(ReferenceType t) {
+ assert(t <= 0xFF, "overflow");
+ _reference_type = (u1)t;
+ }
static ByteSize reference_type_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(instanceKlass, _reference_type)); }
// find local field, returns true if found
bool find_local_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;